全部产品
分布式关系型数据库 DRDS

YYYYMM_OPT

更新时间:2017-07-27 17:46:09   分享:   

使用要求

  • 拆分键的类型必须是 DATE / DATETIME / TIMESTAMP 其中之一。

  • 用户数据的时间的年份与月份是随时间自然增长的,而不是随机。

  • DRDS 实例的版本必须是 5.1.28-1320920 及其以上的版本。DRDS 版本说明请参考文档版本说明

优化点

相对于 YYYYMM,YYYYMM_OPT 随着时间线递增能够保持数据在各个 RDS 实例之间的均衡分布

例如,假设用户在 DRDS 实例上挂了 2 个 RDS 实例,共 16 个分库,通常 DB0~DB7 的分库在一个 RDS 实例上,DB8~DB15 的分布在另外的 RDS 实例上。

那么,下图就是分别使用 YYYYMM 与 YYYYMM_OPT 进行分库时,它们的映射结果(只分库不分表)的对比:

拆分函数

  • YYYYMM_OPT 的各个 RDS 实例之间的数据均衡性,有助于充分利用各个 RDS 实例的性能。

  • 关于 YYYYMM 与 YYYYMM_OPT 的选择:

    • 如果业务数据的时间按顺序逐渐增大的,并且各个时间点的数据量相差不大,那么适合用 YYYYMM_OPT 实现 RDS 实例之间的数据均衡;
    • 如果业务数据的时间会比较跳跃,数据的时间点出现比较随机,那么适合用 YYYYMM。

路由方式

  • 根据分库键的时间值的年份月份进行计算哈希值,然后再将哈希值按分库数去取余,完成路由计算

  • 分库分表键的哈希计算过程会根据 DRDS 之下的 RDS 实例的数目适当考虑 RDS 实例间数据的均衡性并选

使用场景

  • 业务需要按年月进行分库分表。

  • 用户希望 DRDS 的各个 RDS 实例的数据量保持相对均衡。

  • 拆分键的时间呈顺序递增(即不是随机的)并且各个月份的数据量相对平均的前提下(例如,每个月的流水日志,它随着月份不断增大,数据不会集中在同一个 RDS 上)。

注意事项

  • YYYYMM_OPT 不支持对于每一个年月都独立对应一张分表,YYYYMM_OPT 的分库分表必须固定分表数目

  • 当月份经过一个轮回(如 2013-03 是 2012-03 的一个轮回)后,同一个月份就有可能被路由到同一个分库分表,视实际的分表数目而定。

本文导读目录
本文导读目录
以上内容是否对您有帮助?