自适应哈希索引介绍
自适应哈希索引实现原理
监视自适应散列索引
InnoDB存储引擎会监控对表上各索引页的查询。并建立合适的哈希索引,加速数据页的访问。
哈希索引,查询消耗 O(1)
降低对二级索引树的频繁访问资源。
自适应
自适应散列索引(AHI)使InnoDB在系统上执行更像内存数据库,该功能由innodb_adaptive_hash_index 配置启用。
Innodb存储引擎会监控对表上二级索引的查找,如果发现某二级索引被频繁访问,innodb就会使用索引键的前缀建立一个哈希索引。将索引值转换为一种指针,便于直接访问,带来速度的提升。
经常访问的二级索引数据会自动被生成到hash索引里面去(最近连续被访问三次的数据),自适应哈希索引通过缓冲池的B+树构造而来,因此建立的速度很快。
但是维护AHI是有性能开销的。需要考虑使用实际的负载,来决定是否启用。
LIKE运算符和%通配符的查询也不会受益于AHI。对于不需要自适应散列索引的工作,将其关闭可减少不必要的性能开销。
SHOW ENGINE INNODB STATUS
mysql> show engine innodb status\G
……
Hash table size 34673, node heap has 0 buffer(s)
0.00 hash searches/s, 0.00 non-hash searches/s
通过hash searches、non-hash searches计算自适应hash索引带来的收益以及付出,确定是否开启自适应hash索引