DDL 拆分函數概述

DRDS DDL 拆分函數對分庫分表的支持情況

DRDS 是一個支持既分庫又分表的數據庫服務。目前 DRDS 分庫函數與分表函數的支持情況如下:

拆分函數描述是否支持用於分庫是否支持用於分表
HASH簡單取模
UNI_HASH簡單取模
RIGHT_SHIFT數值向右移
RANGE_HASH雙拆分列哈希
MM按月份哈希
DD按日期哈希
WEEK按周哈希
MMDD按月日哈希
YYYYMM按年月哈希
YYYYWEEK按年周哈希
YYYYDD按年日哈希
YYYYMM_OPT按年月哈希,改進型
YYYYWEEK_OPT按年周哈希,改進型
YYYYDD_OPT按年日哈希,改進型
  • DRDS 分庫分表拆分方式的注意點

    • 在 DRDS 中,一張邏輯表的拆分方式是由拆分函數(包括分片數目與路由算法)與拆分鍵(包括拆分鍵的 MySQL 數據類型)共同定義

    • 只有當 DRDS 的分庫函數與分表函數相同並且分庫鍵與分表鍵也相同時,纔會被認爲分庫與分表都使用了共同的拆分方式。這樣的方式可以讓 DRDS 可以根據拆分鍵的值唯一定位到一個物理分庫與一張物理分表。

    • 當一張邏輯表的分庫拆分方式與分表拆分方式不一致時,若 SQL 查詢沒有同時帶上分庫條件與分表條件,則 DRDS 在查詢過程會產生全分庫掃描或全分表掃描的操作。

DRDS DDL 拆分函數的數據類型支持情況

DRDS 的拆分函數對各數據類型對支持情況有所不同,下表顯示了 DRDS 拆分函數對各種數據類型的支持情況(√ 表示支持,× 表示不支持):

shard_funcs

DRDS 的 DDL 拆分函數的語法說明

DRDS 兼容 MySQL 的 DDL 表操作語法,並添加了drds_partition_options的分庫分表關鍵字如下:

  1. CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
  2. (create_definition,...)
  3. [table_options]
  4. [drds_partition_options]
  5. [partition_options]
  6. CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
  7. [(create_definition,...)]
  8. [table_options]
  9. [drds_partition_options]
  10. [partition_options]
  11. select_statement
  12. drds_partition_options:
  13. DBPARTITION BY
  14. { {HASH|YYYYMM|YYYYWEEK|YYYYDD|YYYYMM_OPT|YYYYWEEK_OPT|YYYYDD_OPT}([column])}
  15. [TBPARTITION BY
  16. { {HASH|MM|DD|WEEK|MMDD|YYYYMM|YYYYWEEK|YYYYDD|YYYYMM_OPT|YYYYWEEK_OPT|YYYYDD_OPT}(column)}
  17. [TBPARTITIONS num]
  18. ]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章