訂單系統設計 分頁查詢

2021-10-09 02:52:56 字數 1376 閱讀 1429

1.2 查詢條件設計

二、技術方案

2.2 mysql + es架構

三、 db規範

產品設計不合理是導致深度分頁查詢的乙個重要原因,比如下圖所示的深度隨機跳頁設計方案,如果沒有特殊原因,正常情況下應避免使用。一方面,隨機跳頁實際意義有多大有待考究;另一方面,隨機性會加大後端的難度,如果隨機跳頁的頁碼很大,有可能導致查詢超時,甚至異常,反而影響產品的穩定性以及使用者體驗。

滾動分頁方案的特點是連續,分頁都是連續的,避免了隨機跳頁以及深度分頁,常用於移動端等支援手觸裝置上。

分頁查詢條件的設計,歸根結底就兩點:控制資料量,避免資料過大;降低複雜度,避免巢狀等過於複雜查詢;

方案說明:將k頁設為一組,每次從資料庫查詢時批量查詢(需要攜帶資料的最大id),然後將資料快取,同組的其它分頁查詢時,直接從快取查詢即可,如上圖所示。

問題:頁深有限制,m+n最大為1萬。頁數越深,占用記憶體越大,可能導致超時、oom等問題(每個分片的資料先查詢出m+n,然後再聚合)。

適用於非實時性場景,比如資料導、遷移等。

任何新建立的表,主鍵都為無符號整型且自增,確保db效能。

create

table

`order`(

`id`

bigint(20

)unsigned

notnull

auto_increment

comment

'主鍵id'

,`create_time`

datetime

notnull

default

current_timestamp

comment

'建立時間'

,`update_time`

datetime

notnull

default

current_timestamp

comment

'更新時間',.

..primary

key(

`id`),

)engine

=innodb

auto_increment=0

default

charset

=utf8mb4 comment

='訂單表'

;

參考

1. 上億資料怎麼玩深度分頁?

訂單系統設計 訂單號設計

三 因子分表法 唯一性 必要 每個訂單號全域性唯一代表乙個訂單 安全性 必要 訂單號不能透露訂單量 運營規模等業務資訊 資料安全性 高效能 訂單號的建立成本越低越好 擴充套件性 能夠較好的支撐後續業務發展變大帶來的分庫分表 訂單長度擴充套件等場景 不安全 訂單號能夠反映出系統的訂單量,存在業務資料外...

訂單系統架構設計

高併發下單主要包括以下幾個方面 分庫分表 多應用例項全域性唯一訂單號 資料庫連線 買家查詢訂單 賣家查詢訂單 擴容問題 業務拆分 一 分庫分表 隨著訂單量的增長,資料庫的發展主要經歷以下幾個步驟 1主 1從架構 雙主 多從架構,讀寫分離 表分割槽,提高併發 分表,提高併發 master更換ssd 分...

訂單系統訂單表設計方案

一年前,在上一家公司接手了乙個含有訂單系統的專案,業務並不複雜,但是當時令我比較困惑的是訂單表的設計。困惑的點主要是隨著訂單量增加,單錶的儲存能力將達到瓶頸,必然要採用分表的方案,那麼按照什麼維度拆分合適呢?分表之後帶來的最大的挑戰是訂單查詢。如果以使用者為中心,採用userid取模,可以很方便的處...