开发指南—函数—拆分函数—RIGHT_SHIFT

简介: 本文将介绍RIGHT_SHIFT函数的使用方式

描述

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

使用限制

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

使用场景

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

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

使用示例

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


create table test_hash_tb (    
    id int, 
    name varchar(30) DEFAULT NULL,  
    create_time datetime DEFAULT NULL,
    primary key(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 
dbpartition by RIGHT_SHIFT(id, 8) 
tbpartition by RIGHT_SHIFT(id, 8) tbpartitions 4;
相关文章
|
机器学习/深度学习 弹性计算 文字识别
ECS实例问题之重启后公网ip变化如何解决
ECS(Elastic Compute Service,弹性计算服务)是云计算服务提供商提供的一种基础云服务,允许用户在云端获取和配置虚拟服务器。以下是ECS服务使用中的一些常见问题及其解答的合集:
|
9月前
|
前端开发 JavaScript 程序员
鸿蒙开发:console日志输出
针对初学者而言,大家只需要掌握住日志打印即可,等到了鸿蒙应用开发的时候,还有一个鸿蒙原生的打印工具HiLog,到时,我们也会详细的去讲述,也会针对HiLog,封装一个通用的工具类。
341 11
鸿蒙开发:console日志输出
|
消息中间件 安全 Apache
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(4)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
364 1
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(4)
|
Java
"揭秘Java IO三大模式:BIO、NIO、AIO背后的秘密!为何AIO成为高并发时代的宠儿,你的选择对了吗?"
【8月更文挑战第19天】在Java的IO编程中,BIO、NIO与AIO代表了三种不同的IO处理机制。BIO采用同步阻塞模型,每个连接需单独线程处理,适用于连接少且稳定的场景。NIO引入了非阻塞性质,利用Channel、Buffer与Selector实现多路复用,提升了效率与吞吐量。AIO则是真正的异步IO,在JDK 7中引入,通过回调或Future机制在IO操作完成后通知应用,适合高并发场景。选择合适的模型对构建高效网络应用至关重要。
387 2
|
9月前
|
关系型数据库 MySQL 索引
WordPress文章推荐插件
这是一款功能强大的WordPress插件,支持在文章底部和侧边栏推荐最新、随机、相关文章及标签。主要特点包括:无需依赖文章标签即可实现相关文章推荐;支持全文索引搜索,提升搜索速度与准确性;可自定义侧边栏HTML模板和样式;兼容默认搜索功能替换,优化搜索体验。插件适合技术新手和进阶用户,提供免费技术支持,但默认列表样式如需改为图文样式需额外收费。注意:全文索引功能需MySQL 5.7及以上版本。
173 0
|
11月前
|
SQL 弹性计算 分布式计算
阿里云 EMR 发布托管弹性伸缩功能,支持自动调整集群大小,最高降本60%
阿里云开源大数据平台 E-MapReduce 重磅推出托管弹性伸缩功能,基于 EMR 托管弹性伸缩功能,您可以指定集群的最小和最大计算限制,EMR 会持续对与集群上运行的工作负载相关的关键指标进行采样,自动调整集群大小,以获得最佳性能和资源利用率。
555 15
|
机器学习/深度学习 Linux 网络安全
ssh远程访问windows系统下的jupyterlab
ssh远程访问windows系统下的jupyterlab
404 3
|
XML JSON 开发框架
盘点5个C#实用的Word、PPT、Excel、Mail第三方库
盘点5个C#实用的Word、PPT、Excel、Mail第三方库
627 0
|
Ubuntu Linux 数据安全/隐私保护
WIN11系统安装Linux子系统的方法
使用windows11自带的虚拟机安装Linux子系统(WSL),首先需要电脑在BIOS中打开电脑的虚拟技术支持,可以自己搜索一下,网上有很多。 这里只说明一下剩下安装LINUX子系统的操作。使用的是ubuntu无桌面精简发行版。
4507 0
|
Shell 网络安全 开发工具
Github: fatal: Unsupported SSL backend ‘“openssl”‘. Supported SSL backends: openssl schannel
Github: fatal: Unsupported SSL backend ‘“openssl”‘. Supported SSL backends: openssl schannel
810 0
Github: fatal: Unsupported SSL backend ‘“openssl”‘. Supported SSL backends: openssl schannel