InnoDB缓冲池用来存放各种数据的缓存,包括有索引页、数据页、undo页、插入缓冲、自适应哈希索引、innodb存储的锁信息、数据字典信息等,自适应哈希索引则是mysql innodb缓冲池的一部分。
Innodb存储引擎会监控对表上二级索引的查找,如果发现某二级索引被频繁访问,二级索引成为热数据,通过建立哈希索引可以带来速度的提升。
查看自适应hash索引功能被打开参数:
mysql> show variables like '%ap%hash_index';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| innodb_adaptive_hash_index | ON |
+----------------------------+-------+
1 row in set (0.01 sec)
经常访问的二级索引数据会自动被生成到hash索引里面去(最近连续被访问三次的数据),自适应哈希索引通过缓冲池的B+树构造而来,因此建立的速度很快。
特点:
1)、无序,没有树高
2)、降低对二级索引树的频繁访问资源
索引树高<=4,访问索引:访问树、根节点、叶子节点
3)、自适应
缺陷:
1)、hash自适应索引会占用innodb buffer pool;
2)、自适应hash索引只适合搜索等值的查询,如select * from table where index_col='xxx',而对于其他查找类型,如范围查找,是不能使用的;
3)、极端情况下,自适应hash索引才有比较大的意义,可以降低逻辑读。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2157462/,如需转载,请注明出处,否则将追究法律责任。