官网解释
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功能是否适合特定系统和工作负载,因此请考虑在启用和禁用时运行基准测试。