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

简介: 本文将介绍HASH函数使用方式。

描述

  • 若分库和分表使用不同拆分键进行HASH时,则根据分库键的键值直接按分库数取余。如果键值是字符串,则字符串会先被换算成哈希值再进行路由计算。例如HASH(8)等价于8%D(D是分库数目), 而HASH("ABC")等价于hashcode("ABC").abs()%D(D是分库数目)。
  • 若分库和分表都使用同一个拆分键进行HASH时,则根据拆分键的键值按总的分表数取余。例如有2个分库,每个分库4张分表,那么0库上保存分表0~3,1库上保存分表4~7。某个键值为15,那么根据该路由方式,则该键值15将被分到1库的表7上((15 % (2 * 4) =7))。

注意事项

HASH函数要求拆分列的值的自身分布均衡才能保证哈希均衡。

使用限制

拆分键的数据类型必须是整数类型或字符串类型。

使用场景

HASH函数主要适用于如下场景:

  • 需要按用户ID或订单ID进行分库的场景;
  • 拆分键是字符串类型的场景。

示例

假设需要对ID列按HASH函数进行分库不分表,则您可以使用如下DDL语句进行建表:


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 HASH(ID);
相关文章
|
10月前
|
存储 缓存 网络协议
为什么有了MAC还需要IP?
通过上述分析和解释,我们可以清晰地看到为什么在计算机网络中既需要MAC地址也需要IP地址。它们各自的功能和作用相辅相成,共同确保了网络通信的有效性和灵活性。
346 9
|
关系型数据库 MySQL 数据库管理
|
算法 Go 数据安全/隐私保护
golang中实现RSA(PKCS#1)加密解密
RSA非对称加密算法,基于PKCS#1规范, 我们在使用RSA的时候需要提供 公钥和私钥 , 我们可以通过openss来为我们生成对应的pem格式的公钥和私钥匙。 关于pkcs相关标准如下,摘自百度: PKCS#1:定义RSA公开密钥算法加密和签名机制,主要用于组织PKCS#7中所描述的数字签名和数字信封[22]。
4083 0
|
SQL Oracle 关系型数据库
c# 数据库系统设计综合实验-图书管理系统
c# 数据库系统设计综合实验-图书管理系统
453 0
c# 数据库系统设计综合实验-图书管理系统
|
机器学习/深度学习 自然语言处理 算法
自然语言处理在医学领域的实践
自然语言处理在医学领域的实践
自然语言处理在医学领域的实践
IDEA:cannot start process,the working directory ‘***‘ does not exist
IDEA:cannot start process,the working directory ‘***‘ does not exist
|
数据安全/隐私保护
教你如何快速找回备案账号
如果您在阿里云ICP代备案管理系统或原万网备案平台上已经备案成功,现在忘记了备案信息所在的阿里云账号,您可参考本文找回备案账号,并将原万网的备案信息尽快认领或导入到阿里云ICP代备案管理系统,后续需要在阿里云ICP代备案管理系统中管理维护您的备案信息。
2960 0
|
存储 人工智能 安全
【F3简介】一张图看懂FPGA-F3实例
阿里云宣布全新一代FPGA云服务器F3正式上线,并且开通邀测!
4410 0