推特 阿里云技术文档正文

RIGHT_SHIFT_拆分函数使用说明_分库分表_SQL 手册_分布式关系型数据库 DRDS

admin 阿里云技术文档 2020-02-11 205 0
阿里云服务器优惠

RIGHT_SHIFT

使用要求

  • 拆分键的类型必须整数类型。
  • DRDS 实例的版本必须是 5.1.28-1320920 及其以上的版本。DRDS 版本说明请参考文档版本说明

路由方式

根据分库键的键值(键值必须是整数)有符号地向右移二进制移指定的位数(位数由用户通过 DDL 指定),然后将得到的整数值按分库(表)数目取余。

使用场景

当拆分键的大部分的键值的低位部分区分度比较低而高位部分区分度比较高时,则适用于通过此拆分函数提高散列结果的均匀度。

例如:有 4 个拆分键的键值,分别为 0x0100、0x0200、0x0300 与 0x0400, 这 4 个值低 8 位部分都是 0。通常一些业务后N位可能只是一些业务上标志位,如果直接通过对面值取余散列,其散列效果可能会比较差。但如是通过 RIGHT_SHIFT(shardKey, 8)将拆分键的值进行二进制右移 8 位,则分别变成了 0x01、0x02、0x03 与 0x04,这样的散列效果就变得比较好(若分4个库,刚好可以每个值对应一个分库)。

使用示例

假设想将 ID 作为拆分键,并且想将 ID 的值向右移二进制 4 位的值作为哈希值,则可以如下建表:

  1. create table test_hash_tb (
  2. id int,
  3. name varchar(30) DEFAULT NULL,
  4. create_time datetime DEFAULT NULL,
  5. primary key(id)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  7. dbpartition by RIGHT_SHIFT(id, 8)
  8. tbpartition by RIGHT_SHIFT(id, 8) tbpartitions 4;

注意事项

移位的数目不能超过整数类型所占有的位数目。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论

-----