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 拆分函數對各種數據類型的支持情況(√ 表示支持,× 表示不支持):
DRDS 的 DDL 拆分函數的語法說明
DRDS 兼容 MySQL 的 DDL 表操作語法,並添加了drds_partition_options
的分庫分表關鍵字如下:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[drds_partition_options]
[partition_options]
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)]
[table_options]
[drds_partition_options]
[partition_options]
select_statement
drds_partition_options:
DBPARTITION BY
{ {HASH|YYYYMM|YYYYWEEK|YYYYDD|YYYYMM_OPT|YYYYWEEK_OPT|YYYYDD_OPT}([column])}
TBPARTITION BY
{ {HASH|MM|DD|WEEK|MMDD|YYYYMM|YYYYWEEK|YYYYDD|YYYYMM_OPT|YYYYWEEK_OPT|YYYYDD_OPT}(column)}
[TBPARTITIONS num]
]
- 分佈式關係型數據庫 DRDS分佈式關係型數據庫服務(Distributed Relation...查看詳情
- 雲數據庫 RDS 版阿里雲關係型數據庫(Relational Database Se...查看詳情
- 企業級分佈式應用服務 EDAS企業級分佈式應用服務(Enterprise Distribute...查看詳情