ahi可以让mysql在适当的负载和足够buffer pool的情况下让mysql看起来像是内存数据库,而不需牺牲事务功能和可靠性,可以通过innodb_adaptive_hash_index选项启动关闭这个功能。
基于搜索的观察者模式,mysql使用索引键的前缀创建hash索引。hash索引对那些经常访问的索引页创建。如果一个表的大部分都在内存中,hash index可以通过直接查找元素的方式加快查询速度,把索引值转换成一个排序的指针。innodb有监控索引搜索的机制,如果innodb注意到能通过构造hash 索引来加速查询,那么他会自动去创建。
在一些负载的情况下,hash index的查找效益明显高于监控索引查询和维护hash index结构的花费。
有时候,确保ahi访问的读写锁会在负载很重的情况下变成竞争来源。比如很多并发关联。like操作符,和%匹配符不能再ahi中获益,在这种情况下可以关闭ahi,hash索引总是在基于已存在的b-tree索引的结构上创建,hash index可以是部分的覆盖经常访问的页。可以使用 SHOW ENGINE INNODB STATUS 命令去监控,如果看到了很多线程在等待 RW-latch竞争,那么可以考虑关闭该功能。
mysql adaptive hash index
最新推荐文章于 2024-06-05 20:14:03 发布