本页讨论:
  • 自适应哈希索引介绍
  • 自适应哈希索引实现原理
  • 监视自适应散列索引

自适应哈希索引介绍

InnoDB存储引擎会监控对表上各索引页的查询。并建立合适的哈希索引,加速数据页的访问。

特点
  • 哈希索引,查询消耗 O(1)
  • 降低对二级索引树的频繁访问资源。
  • 自适应
缺点
  • hash自适应索引会占用innodb buffer pool;
  • 自适应hash索引只适合搜索等值的查询,如select * from table where index_col='xxx',而对于其他查找类型,如范围查找,是不能使用的;
自适应散列索引(AHI)使InnoDB在系统上执行更像内存数据库,该功能由innodb_adaptive_hash_index 配置启用。

自适应哈希索引实现原理




Innodb存储引擎会监控对表上二级索引的查找,如果发现某二级索引被频繁访问,innodb就会使用索引键的前缀建立一个哈希索引。将索引值转换为一种指针,便于直接访问,带来速度的提升。

经常访问的二级索引数据会自动被生成到hash索引里面去(最近连续被访问三次的数据),自适应哈希索引通过缓冲池的B+树构造而来,因此建立的速度很快。

但是维护AHI是有性能开销的。需要考虑使用实际的负载,来决定是否启用。
LIKE运算符和%通配符的查询也不会受益于AHI。对于不需要自适应散列索引的工作,将其关闭可减少不必要的性能开销。


监视自适应散列索引


SHOW ENGINE INNODB STATUS
在输出的SEMAPHORES部分中。

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


34673:字节为单位,占用内存空间总量
通过hash searches、non-hash searches计算自适应hash索引带来的收益以及付出,确定是否开启自适应hash索引


上一篇:更改缓冲区
下一篇:redo log缓冲区

成为你想看到的世界变革力量

创建者:万乐荣
最后更新时间 : 2018年9月7日 11:42

评论