全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
分布式关系型数据库 DRDS

RIGHT_SHIFT

更新时间:2017-08-16 19:12:46

使用要求

  • 拆分键的类型必须整数类型。

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

路由方式

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

使用场景

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

例如:有 4 个拆分键的键值,分别为 12340000、12350000、12460000 与 1233000, 这 4 个值低 4 位部分都是 0000,直接通过取余散列效果比较差,但如是通过 RIGHT_SHIFT(shardKey, 4)将拆分键的值进行向右移 4 位,则变成了 1234、1235、1246 与 1233,这样的散列效果就变得比较好。

使用示例

假设想将 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, 4)
  8. tbpartition by RIGHT_SHIFT(id, 4) tbpartitions 2;

注意事项

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

本文导读目录