暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

[ACDU翻译] MySQL 15.5.3 自适应哈希索引

原创 由迪 2022-02-08
398

自适应散列索引能够InnoDB在系统上执行更像内存数据库,具有适当的工作负载组合和足够的缓冲池内存,而不会牺牲事务功能或可靠性。自适应哈希索引由 innodb_adaptive_hash_index 变量启用,或在服务器启动时由 --skip-innodb-adaptive-hash-index.

根据观察到的搜索模式,使用索引键的前缀构建哈希索引。前缀可以是任意长度,也可能只有B树中的一些值出现在哈希索引中。哈希索引是针对经常访问的索引页面的需求而构建的。

如果一个表几乎完全适合主内存,哈希索引通过启用任何元素的直接查找来加速查询,将索引值转换为一种指针。 InnoDB具有监视索引搜索的机制。如果InnoDB注意到查询可以从构建哈希索引中受益,它会自动这样做。

对于某些工作负载,哈希索引查找的加速大大超过了监控索引查找和维护哈希索引结构的额外工作。在繁重的工作负载(例如多个并发连接)下,对自适应哈希索引的访问有时会成为争用的来源。带有 LIKE运算符和% 通配符的查询也往往不会受益。对于不能从自适应哈希索引中受益的工作负载,关闭它可以减少不必要的性能开销。因为很难提前预测自适应哈希索引是否适合特定系统和工作负载,请考虑在启用和禁用它的情况下运行基准测试。

自适应哈希索引特征被分区。每个索引都绑定到一个特定的分区,每个分区都由一个单独的锁存器保护。分区由 innodb_adaptive_hash_index_parts 变量控制。该 innodb_adaptive_hash_index_parts 变量默认设置为 8。最大设置为 512。

您可以在输出SEMAPHORES部分 监控自适应哈希索引的使用和争用 。SHOW ENGINE INNODB STATUS如果有许多线程在等待创建的 rw-latch btr0sea.c,请考虑增加自适应哈希索引分区的数量或禁用自适应哈希索引。

有关哈希索引的性能特征的信息,请参阅第 8.3.9 节,“B-Tree 和哈希索引的比较”

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论