自适应哈希索引(Adaptive Hash Index, AHI)

Adaptive Hash Index, AHIhtml

场景

好比咱们每次从辅助索引查询到对应记录的主键,而后还要用主键做为search key去搜索主键B+tree才能找到记录.mysql

当这种搜索变多了,innoDB引擎会进行优化.sql

维护索引叶页面中全部记录的索引键值(或键值前缀)到索引叶页面位置的Hash映射关系,
可以根据索引键值(前缀)快速定位到叶页面知足条件记录的Offset,减小了B+树Search Path的代价,将B+树从Root页面至Leaf页面的路径定位,优化为Hash Index的快速查询。数据库

Adaptive Hash Index是针对B+树Search Path的优化,所以全部会涉及到Search Path的操做,都可使用此Hash索引进行优化.性能

AHI还有一些要求,对这个页的连续访问模式必须是同样的。例如对于(a,b)这样的联合索引页,其访问模式能够是下面状况:优化

  1. where a=xxx
  2. where a =xxx and b=xxx

访问模式同样是指查询的条件是同样的,若交替进行上述两种查询,那么InnoDB存储引擎不会对该页构造AHI。 固然,访问模式一致,还必须达到必定的数量,好比页经过该模式访问了N次,其中N=页中记录*1/16.spa

一些资料统计,启用AHI后,读取和写入速度能够提升2倍,辅助索引的链接操做性能能够提升5倍。.net

AHI的设计思想是数据库自优化,不须要DBA对数据库进行手动调整,只能选择开启或者关闭。咱们能够经过以下命令查看innodb AHI的使用状况.设计

mysql> show engine innodb status
复制代码

参考

hedengcheng.com/?p=458code

blog.csdn.net/bohu83/arti…

dev.mysql.com/doc/refman/…

相关文章
相关标签/搜索