开发者社区 问答 正文

DDL 拆分函数概述



DRDS DDL 拆分函数对分库分表的支持情况


DRDS 是一个支持既分库又分表的数据库服务。目前 DRDS 分库函数与分表函数的支持情况如下:

拆分函数描述是否支持用于分库是否支持用于分表
HASH简单取模
RIGHT_SHIFT数值向右移
RANGE_HASH双拆分列哈希
MM按月份哈希
DD按日期哈希
WEEK按周哈希
MMDD按月日哈希
YYYYMM按年月哈希
YYYYWEEK按年周哈希
YYYYDD按年日哈希
YYYYMM_OPT按年月哈希,改进型
YYYYWEEK_OPT按年周哈希,改进型
YYYYDD_OPT按年日哈希,改进型

  • [backcolor=transparent]DRDS 分库分表拆分方式的注意点
    在 DRDS 中,一张逻辑表的[backcolor=transparent]拆分方式是由拆分函数(包括分片数目与路由算法)与拆分键(包括拆分键的 MySQL 数据类型)共同定义。

  • 只有当 DRDS 的分库函数与分表函数相同并且分库键与分表键也相同时,才会被认为分库与分表都使用了共同的拆分方式。这样的方式可以让 DRDS 可以根据拆分键的值唯一定位到一个物理分库与一张物理分表。

  • 当一张逻辑表的分库拆分方式与分表拆分方式不一致时,若 SQL 查询没有同时带上分库条件与分表条件,则 DRDS 在查询过程会产生全分库扫描或全分表扫描的操作。


DRDS DDL 拆分函数的数据类型支持情况


DRDS 的拆分函数对各数据类型对支持情况有所不同,下表显示了 DRDS 拆分函数对各种数据类型的支持情况(√ 表示支持,× 表示不支持):


DRDS 的 DDL 拆分函数的语法说明


DRDS 兼容 MySQL 的 DDL 表操作语法,并添加了drds_partition_options的分库分表关键字如下:
  1. [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
  2. [backcolor=transparent]    [backcolor=transparent]([backcolor=transparent]create_definition[backcolor=transparent],...)
  3. [backcolor=transparent]    [backcolor=transparent][[backcolor=transparent]table_options[backcolor=transparent]]
  4. [backcolor=transparent]    [backcolor=transparent][[backcolor=transparent]drds_partition_options[backcolor=transparent]]
  5. [backcolor=transparent]    [backcolor=transparent][[backcolor=transparent]partition_options[backcolor=transparent]]
  6. [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
  7. [backcolor=transparent]    [backcolor=transparent][([backcolor=transparent]create_definition[backcolor=transparent],...)]
  8. [backcolor=transparent]    [backcolor=transparent][[backcolor=transparent]table_options[backcolor=transparent]]
  9. [backcolor=transparent]    [backcolor=transparent][[backcolor=transparent]drds_partition_options[backcolor=transparent]]
  10. [backcolor=transparent]    [backcolor=transparent][[backcolor=transparent]partition_options[backcolor=transparent]]
  11. [backcolor=transparent]    select_statement
  12. [backcolor=transparent]drds_partition_options[backcolor=transparent]:
  13. [backcolor=transparent]    DBPARTITION BY
  14. [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]])}
  15. [backcolor=transparent]        [backcolor=transparent][[backcolor=transparent]TBPARTITION BY
  16. [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])}
  17. [backcolor=transparent]          [backcolor=transparent][[backcolor=transparent]TBPARTITIONS num[backcolor=transparent]]
  18. [backcolor=transparent]        [backcolor=transparent]]

展开
收起
猫饭先生 2017-10-30 11:27:40 1955 分享 版权
0 条回答
写回答
取消 提交回答