DRDS怎么進行分片?
更新時間 2023-11-30 11:22:44
最近更新時間: 2023-11-30 11:22:44
分享文章
本文介紹DRDS怎么進行分片。
DRDS通過數據分片的方式,將業務數據拆分到多個MySQL實例上進行分片存儲。
邏輯庫
用戶創建邏輯庫時,可以自行選擇哪些MySQL存儲該庫及每個MySQL上存儲幾個分片。
邏輯表
DRDS支持全局表、分片表、單片表、庫內分表、庫內分桶等表類型,DRDS支持簡單Hash、字符串哈希、范圍哈希、枚舉哈希等多種分片算法。用戶創建邏輯表時,根據實際情況需求進行創建,創建時需要指定表類型、哪個字段作為分片鍵、分片算法。
- 全局表,表存儲在所有MySQL上,每個MySQL都包含該表的全量數據。
- 分片表,表按分片的方式存儲在MySQL上,每個MySQL存儲該表的一部分數據。
- 單片表,表只存儲在其中一個MySQL的一個分片上。
- 庫內分表,表經過分片后,仍然很大,則可以對表再次進行拆分,選定另一個字段作為庫內分表的分片鍵進行拆分存儲。庫內分表也屬于分片表。
- 庫內分桶,表經過分片后,仍然很大,對表進行再次拆分,不過拆分方式是按分桶的方式進行拆分,區別于庫內分表需要選定另一個字段作為分片鍵,庫內分桶不需要指定另一個字段,只要指定分桶數量。
分片建議
- 用戶在進行數據分片之前,建議考慮事務、分布式JOIN等場景,盡量將事務邊界范圍縮小到單個MySQL分片上,盡量避免分布式JOIN、跨庫JOIN。
- 建議同一個業務中心的表,按照同一個維度進行數據拆分,比如用戶中心,都按照用戶ID進行分片,這樣使用的時候可以最大程度減少分布式事務、分布式JOIN的情況,降低系統負載。
- 全局表適合存儲配置類數據(比如菜單、區域)類型的表,數據量不大,表變更極少。
- 分片表適合于超大表,建議千萬級以上大表才使用分片表。
- 數據量小(少于千萬級)的表,建議使用單片表即可。
- 使用DRDS時,建議所有SQL語句的查詢條件都能攜帶分片鍵,這樣可以達到最高的執行效率,避免SQL廣播。