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_statementdrds_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...查看详情