使用要求
拆分键的数据类型必须是整数类型或字符串类型。
该拆分函数对 DRDS 版本无要求,默认支持。
路由方式
根据分库键的键值直接按分库数取余(如果是键值是字符串,则字符串会被计算成哈希值再进行计算,完成路由计算,例如: HASH(‘8’) 等价于 8 % D(D 是分库数目)。
使用场景
适合于需要按用户 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);
注意事项
哈希算法是简单取模,要求拆分列的值的自身分布均衡才能保证哈希均衡。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您提到的是阿里云分布式关系型数据库服务(DRDS)中的一种数据分片策略——哈希(HASH)分片。基于您的描述,我来进一步解析和补充一些关键点,帮助您更好地理解和应用这一功能。
您给出的DDL语句展示了如何创建一个按照ID
列进行哈希分片的表。这表明所有记录将根据ID
的哈希值被分配到不同的分库中,而表结构本身不分表。
综上所述,哈希分片是DRDS中一种强大的数据分片手段,适用于需要高并发读写、水平扩展的场景,但实施时需考虑数据分布的均衡性和未来的可扩展性。