其他分享
首页 > 其他分享> > innodb关键特性之自适应哈希索引03

innodb关键特性之自适应哈希索引03

作者:互联网

1.前言

  哈希是一种非常快的查找方法,在一般情况下这种查找的时间复杂度为O(1),即一般仅需要一次查找就能定位数据,而B+树的查找次数,取决于B+树的高度,在生产环境中,B+树的高度一般为3~4层,故需要3~4次查询。

2.Adaptive Hash index(AHI)

  innodb存储引擎会监控对表上个索引页的查询。如果观察到建立哈希索引可以带来速度提升,则建立哈希索引,称为为自适应哈希索引。AHI是通过缓冲池的B+树页构造而来,因此建立的速度很快,而且不需要对整张表构建哈希索引。innodb存储引擎会自动根据访问的频率和模式来自动地为某些热点页建立哈希索引。

3.自适应哈希索引要求

  AHI有一个要求,即对这个页的连续访问模式必须是一样的,例如(a,b)的联合索引页,其访问模式可以是以下情况

访问模式一样指的是查询条件一样,若交替进行上述两种查询,那么innodb存储引擎不会对该页构造AHI,此外AHI还有如下的要求:

根据innodb存储引擎官方的文档显示,启动了AHI之后,读取和写入速度可以提升2倍,辅助索引的连接操作性能可以提升5倍。毫无疑问,AHI是非常好的优化模式,设计的思想是数据库自优化的(self-tuning),即无需要DBA对数据库进行人为调整。

  我们可以通过show engine innodb status命令查看当前AHI的使用情况:  

Hash table size 34673, node heap has 0 buffer(s)
Hash table size 34673, node heap has 0 buffer(s)
Hash table size 34673, node heap has 0 buffer(s)
Hash table size 34673, node heap has 0 buffer(s)
Hash table size 34673, node heap has 0 buffer(s)
Hash table size 34673, node heap has 0 buffer(s)
Hash table size 34673, node heap has 0 buffer(s)
Hash table size 34673, node heap has 0 buffer(s)
0.00 hash searches/s, 0.00 non-hash searches/s            ##这里表示的使用哈希索引的次数和未使用哈希索引的次数

4.哈希索引的缺陷 

 

参考:http://mysql.taobao.org/monthly/2015/09/01/

   https://zhuanlan.zhihu.com/p/268341368

   http://blog.itpub.net/15498/viewspace-2157462/

     https://blog.csdn.net/cpongo6/article/details/88793524

 

 

 

 

 

 

标签:node,03,Hash,之自,AHI,索引,innodb,哈希,hash
来源: https://www.cnblogs.com/zmc60/p/15222606.html