ob的hash算法怎么实现的,怎么保证数据分布相对均衡; hash和key分区的区别(数据分布方面)

有没有相关的解析文档

分区区别可以参考下面这篇文档
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001053120

1 个赞

不是分区区别,是hash分区算法实现 解析

猜测应该是差不多的,只是针对不同的数据类型而已。要深入研究可能得看源码拉。

目前没有相关文档,如需要深入研究可以去git查看学习源码

记得好像是PARTITION BY HASH (expr),MOD取值的对象是expr返回的值,而PARTITION BY KEY (column_list),基于的是列的MD5值。

太细节实现,最好还是去git找源码,以具体版本源码为准。

深入剖析MurmurHash算法:OceanBase中高效C++哈希函数的实用之选 - 知乎 (zhihu.com)
知乎上的一篇hash算分文章,我理解hash算出来后数据放到对应分区,分区的均衡跟算法没关系了,通过RootService来管理租户内各个资源单元间的负载均衡。RootService在执行分区管理操作时,会考虑每个资源单元的CPU、磁盘使用量、内存使用量、IOPS使用情况等因素,以确保所有机器的各类型资源占用都处于一种比较均衡的状态

1 个赞