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

简介: 本文将介绍UNI_HASH的使用方式。

描述

  • 使用UNI_HASH分库时,根据分库键的键值直接按分库数取余。如果键值是字符串,则字符串会被计算成哈希值再进行计算,完成路由计算,例如HASH('8')等价于8 % D(D 是分库数目)。
  • 分库和分表都使用同一个拆分键进行UNI_HASH时,先根据分库键键值按分库数取余,再均匀散布到该分库的各个分表上。

注意事项

UNI_HASH算法是简单取模,要求拆分列的值的自身分布均衡才能保证哈希均衡。

使用限制

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

使用场景

  • 适合于需要按用户ID或订单ID进行分库的场景。
  • 适合于拆分键是整数或字符串类型的场景。
  • 两张逻辑表需要根据同一个拆分键进行分库,两张表的分表数不同,又经常会按该拆分键进行JOIN的场景。

使用示例

假设需要对ID列按UNI_HASH函数进行分库分表,每库包含4张表,则您可以使用如下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 UNI_HASH(ID)
tbpartition by UNI_HASH(ID) tbpartitions 4;

与HASH的比较

对比场景 UNI_HASH HASH
分库不分表。 此时两个函数的路由方式一样,都是根据分库键的键值按分库数取余。
使用同一个拆分键进行分库分表。 同一个键值分到的分库的路由结果不会随着分表数的变化而改变。 同一个键值分到的分库会随着分表数的变化而改变。
两张逻辑表需要根据同一个拆分键进行分库分表,但分表数不同。 当两张表按该拆分键进行JOIN时,不会出现跨库JOIN的情况。 当两张表按该拆分键进行JOIN时,会出现跨库JOIN的情况。

假设有2个物理分库(DB_0和DB_1),2张逻辑表(a和b),其中a表每库1张分表,b表每库2张分表。下图展示了分别使用HASH和UNI_HASH进行拆分后,a表和b表进行JOIN的情景:111.png

相关文章
|
JavaScript
Vue3-修改端口号
Vue3-修改端口号
1775 0
Vue3-修改端口号
wireshark解析rtp协议,流媒体中的AMR/H263/H264包的方法
抓到完整的流媒体包之后,用wireshark打开,其中的包可能不会自动映射成RTP+AMR/H263/H264的包,做如下修改操作即可:1.  把UDP 包解析成RTP/RTCP包。选中UDP包,右键,选择Decode As,选RTP2.  把RTP Payload映射成实际的媒体格式。
3509 0
|
7月前
|
存储 机器学习/深度学习 安全
阿里云服务器计算型c8i与通用型g8i实例性能、适用场景及价格参考
阿里云不断推陈出新,致力于为用户提供高性能、高可靠性和高安全性的云服务器实例,以满足不同用户在各种复杂场景下的需求。其中,计算型c8i与通用型g8i实例凭借其卓越的性能和灵活的配置,成为了企业级用户的热门选择。本文将深入探讨这两款实例的性能特点、最新收费标准以及适用场景和活动价格情况,以供大家了解和选择。
|
7月前
|
文字识别 Python
python做ocr卡证识别很简单
本示例展示了如何使用 `potencent` 库调用腾讯云 OCR 服务识别银行卡和身份证信息。代码中分别通过本地图片路径 (`img_path`) 和配置文件 (`potencent-config.toml`) 实现了银行卡和身份证的 OCR 识别,并输出结果。测试图片及结果显示了识别效果,需提前配置腾讯云的 `SECRET_ID` 和 `SECRET_KEY`。
|
8月前
|
JSON 人工智能 前端开发
用markdown语法制作一个好看的网址导航页面(markdown-web-nav)
这是一篇关于创建网址导航页面的工具分享文章。作者介绍了从手动编写HTML代码到开发可视化工具 *markdown-web-nav* 的历程,旨在简化网址管理与导航页面生成的过程。该工具支持新增、编辑和删除网址数据,通过导入/导出JSON文件、实时预览Markdown效果以及一键复制等功能,让用户轻松制作美观的网站导航页面。文章还提供了详细的操作步骤及常见问题解答,如还原数据、获取网站图标链接等,适合不同技术水平的用户使用。
443 28
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与ai有什么区别
本文探讨了“人工智能”与“AI”在语义、使用场景及技术侧重点上的差异,强调理解这些差异对把握技术发展的重要性。文中分析了两者的学术与通俗应用场景,并结合生成式人工智能认证项目(由培生于2024年推出),说明如何通过理论与实践结合,规避AI局限性,推动技术创新。最终呼吁在概念辨析中探索人工智能的未来潜力。
|
存储 边缘计算 物联网
探索边缘计算:重塑物联网时代的数据处理格局
探索边缘计算:重塑物联网时代的数据处理格局
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与艺术创作:机器与创造力
【10月更文挑战第31天】本文探讨了人工智能在艺术创作中的应用,涵盖绘画、音乐和文学等领域。通过深度学习、生成模型和强化学习等技术,AI正重新定义创造力的概念,辅助艺术家创作,并激发新的艺术形式。文章还讨论了AI对人类创造力的影响及未来发展趋势。
|
存储 安全 大数据
|
存储 物联网 网络性能优化
一文教你小区如何自建快递柜
共享快递拟收费事件后,国内小区物业开启一波自建快递柜的浪潮,阿里平台快递柜销量暴涨1400%。那么问题来了,企业如何基于阿里云物联网平台快速构建一套高可用的共享快递柜服务?
719 1
一文教你小区如何自建快递柜