MySQL索引的Index method中btree和hash的区别

MySQL索引的Index method中btree和hash的区别,第1张

hash 分片

理解了散列表的基本特点,再来看看分布式数据库的 hash 分片。

hash 分片设计的要点:

1. 固定的数据映射到固定的节点 / 槽位

2. 数据分布均匀

3. 扩容方便

主要是扩容时尽可能移动较少的数据。扩容之后实现新的数据分布均匀。

想要实现动态扩容,尽可能不影响业务并保证效率,需要做到移动尽可能少的数据,一致性 hash 就是为了解决移动较少数据的问题,但是一致性 hash 的缺点是数据分布的均匀性较差。为了解决这个问题,聪明的 dev 们又设计了跳增一致性 hash 算法。

到这里,可以看出 hash 与分片最紧密或者说最神似的点在于:

1. 固定的输入有固定的输出

2. 值呈均匀分布

如果分布式数据库的分片数据分布不均匀,最糟情况就像散列表的极端冲突一样,落在最终数据库上的压力跟不使用分布式相同。

3. 方便扩容

当分片填充满的时候,需要扩容使总数据量在总分片之间再次达到数据均匀分布状态,扩容需要用 hash 函数重新映射旧值到新的分片。

4. 散列表和 hash 分片想要有好的表现都依赖于设计良好的 hash 函数。

正是由于这些相似特点,Hash 在分布式数据库里得到比较多的使用。回到测试的老本行,这些点便是我们测试思考的重点。

每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个.frm表描述文件,还有一个.ibd文件。

其中这个文件包括了单独一个表的数据内容以及索引内容,默认情况下它的存储位置也是在表的位置之中。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8501265.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存