DRDS DDL 拆分函数对分库分表的支持情况
DRDS 是一个支持既分库又分表的数据库服务。目前 DRDS 分库函数与分表函数的支持情况如下:
[backcolor=transparent]DRDS 分库分表拆分方式的注意点
在 DRDS 中,一张逻辑表的[backcolor=transparent]拆分方式是由拆分函数(包括分片数目与路由算法)与拆分键(包括拆分键的 MySQL 数据类型)共同定义。
只有当 DRDS 的分库函数与分表函数相同并且分库键与分表键也相同时,才会被认为分库与分表都使用了共同的拆分方式。这样的方式可以让 DRDS 可以根据拆分键的值唯一定位到一个物理分库与一张物理分表。
当一张逻辑表的分库拆分方式与分表拆分方式不一致时,若 SQL 查询没有同时带上分库条件与分表条件,则 DRDS 在查询过程会产生全分库扫描或全分表扫描的操作。
DRDS DDL 拆分函数的数据类型支持情况
DRDS 的拆分函数对各数据类型对支持情况有所不同,下表显示了 DRDS 拆分函数对各种数据类型的支持情况(√ 表示支持,× 表示不支持):
DRDS 的 DDL 拆分函数的语法说明
DRDS 兼容 MySQL 的 DDL 表操作语法,并添加了drds_partition_options的分库分表关键字如下:
- [backcolor=transparent]CREATE [backcolor=transparent][[backcolor=transparent]TEMPORARY[backcolor=transparent]][backcolor=transparent] TABLE [backcolor=transparent][[backcolor=transparent]IF NOT EXISTS[backcolor=transparent]][backcolor=transparent] tbl_name
- [backcolor=transparent] [backcolor=transparent]([backcolor=transparent]create_definition[backcolor=transparent],...)
- [backcolor=transparent] [backcolor=transparent][[backcolor=transparent]table_options[backcolor=transparent]]
- [backcolor=transparent] [backcolor=transparent][[backcolor=transparent]drds_partition_options[backcolor=transparent]]
- [backcolor=transparent] [backcolor=transparent][[backcolor=transparent]partition_options[backcolor=transparent]]
- [backcolor=transparent]CREATE [backcolor=transparent][[backcolor=transparent]TEMPORARY[backcolor=transparent]][backcolor=transparent] TABLE [backcolor=transparent][[backcolor=transparent]IF NOT EXISTS[backcolor=transparent]][backcolor=transparent] tbl_name
- [backcolor=transparent] [backcolor=transparent][([backcolor=transparent]create_definition[backcolor=transparent],...)]
- [backcolor=transparent] [backcolor=transparent][[backcolor=transparent]table_options[backcolor=transparent]]
- [backcolor=transparent] [backcolor=transparent][[backcolor=transparent]drds_partition_options[backcolor=transparent]]
- [backcolor=transparent] [backcolor=transparent][[backcolor=transparent]partition_options[backcolor=transparent]]
- [backcolor=transparent] select_statement
- [backcolor=transparent]drds_partition_options[backcolor=transparent]:
- [backcolor=transparent] DBPARTITION BY
- [backcolor=transparent] [backcolor=transparent]{[backcolor=transparent] [backcolor=transparent]{[backcolor=transparent]HASH[backcolor=transparent]|[backcolor=transparent]YYYYMM[backcolor=transparent]|[backcolor=transparent]YYYYWEEK[backcolor=transparent]|[backcolor=transparent]YYYYDD[backcolor=transparent]|[backcolor=transparent]YYYYMM_OPT[backcolor=transparent]|[backcolor=transparent]YYYYWEEK_OPT[backcolor=transparent]|[backcolor=transparent]YYYYDD_OPT[backcolor=transparent]}([[backcolor=transparent]column[backcolor=transparent]])}
- [backcolor=transparent] [backcolor=transparent][[backcolor=transparent]TBPARTITION BY
- [backcolor=transparent] [backcolor=transparent]{[backcolor=transparent] [backcolor=transparent]{[backcolor=transparent]HASH[backcolor=transparent]|[backcolor=transparent]MM[backcolor=transparent]|[backcolor=transparent]DD[backcolor=transparent]|[backcolor=transparent]WEEK[backcolor=transparent]|[backcolor=transparent]MMDD[backcolor=transparent]|[backcolor=transparent]YYYYMM[backcolor=transparent]|[backcolor=transparent]YYYYWEEK[backcolor=transparent]|[backcolor=transparent]YYYYDD[backcolor=transparent]|[backcolor=transparent]YYYYMM_OPT[backcolor=transparent]|[backcolor=transparent]YYYYWEEK_OPT[backcolor=transparent]|[backcolor=transparent]YYYYDD_OPT[backcolor=transparent]}([backcolor=transparent]column[backcolor=transparent])}
- [backcolor=transparent] [backcolor=transparent][[backcolor=transparent]TBPARTITIONS num[backcolor=transparent]]
- [backcolor=transparent] [backcolor=transparent]]