InnoDB存储引擎监测到同样的二级索引不断被使用,那么它会根据这个二级索引,在内存上根据二级索引树(B+树)上的二级索引值,在内存上构建一个哈希索引,来加速搜索。
查看是否开启自适应哈希索引
show variables like 'innodb_adaptive_hash_index';
查看自适应哈希索引分区
show variables like 'innodb_adaptive_hash_index_parts';
注意:
- 5.7版本以后,每一个分区都有自己的锁,在不同的分区操作不需要锁,在同一个分区操作需要锁;
- 自适应哈希索引本身的数据维护也是要耗费性能的,并不是说自适应哈希索引在任何情况下都会提升二级索引的查询性能!!根据参数指标,来具体分析是否打开或者关闭自适应哈希素引!!!
查看相关信息
show engine innodb status\G
如果出现以下情况,就应该关掉自适应哈希索引:
- RW-latch等待的线程数量(自适应哈希索引默认分配了8个分区),同一个分区等待的线程数量过多,是不好的,会阻塞线程;
- 走自适应哈希索引搜索的频率(低) 和 二级索引树搜素的频率(高);