InnoDB存储引擎监测到同样的二级索引不断被使用,那么它会根据这个二级索引,在内存上根据二级索引树(B+树)上的二级索引值,在内存上构建一个哈希索引,来加速搜索。
不过哈希索引是消耗资源的,它需要维护自自身的数据,并不是说自适应哈希在任何情况下都会提升二级索引的查询性能
使用SHOW ENGINE INNODB STATUS\G
可以看到两个比较重要的信息,如果出现以下情况,关闭哈希索引:
- RW-latch等待的线程数量(自适应哈希索引默认分配了8个分区),同一个分区等待的线程数量过多
- 走自适应哈希索引搜索的频率(低)和走二级索引树搜索的频率(高)