MySQL 之 InnoDB引擎 Adaptive Hash index (自适应哈希索引)

Adaptive Hash Index(AHI)是InnoDB的一种特性,能够在内存中创建哈希索引以加速查询,尤其是对于频繁访问的页面。AHI不是预定义的索引,而是根据查询模式动态构建的,基于Btree索引的"索引的索引"。然而,对于某些工作负载,AHI可能会导致争用和额外开销,因此是否开启需要依据性能基准测试来决定。MySQL 5.7中,AHI功能已分区,可通过innodb_adaptive_hash_index_parts变量控制。
摘要由CSDN通过智能技术生成

官网解释

Adaptive Hash index(自适应哈希索引)的特性使得InnoDB在不牺牲事务特性或可靠性的前提下,为缓冲池提供适当的工作负载和足够的内存的时候,能够表现的更像 in-memory(内存)数据库。

该特性是通过变量innodb_adaptive_hash_index来使用的,可以说Adaptive Hash index不是传统意义的索引,可以理解为在Btree上的"索引"。

通过观测搜索模式,用索引键的前缀来构建哈希索引。前缀可以是任意长度,哈希索引根据经常需要访问的索引页面构建的。

如果一整个表都在主内存中,Hash Index可以通过直接查找任何元素加速查询,把索引值变成一种指针。InnoDB有个监控索引搜索的机制,如果查询可以从构建哈希索引受益就会自动执行该操作。

对于某些业务,Hash index查找的加速大大超过其成本例如(监听索引查找和维护索引结构的成本),在繁重的工作负载(例如多个并发连接)下,对adaptive hash index的访问有时会成为争用的来源。带着LIKE和%的查询不会受益。对于无法从adaptive hash index功能中受益的工作负载,将其关闭可减少不必要的性能开销。由于很难预先预测adaptive hash index功能是否适合特定系统和工作负载,因此请考虑在启用和禁用时运行基准测试。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_我走路带风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值