发现本机AHI默认是关闭的,真实打开它后做两遍热点点查测试,看这个哈希索引从冷到热,真实的提速是怎么体现出来的。
代码SELECT @@innodb_adaptive_hash_index; -- 用存储过程循环20000次,反复点查同50个id CALL hot_lookup_test();
@@innodb_adaptive_hash_index: 0 ← 真实是关闭状态 关闭状态下,20000次热点点查: 耗时 153451 微秒(约153.5毫秒) adaptive_hash_searches: 0
本以为AHI默认是开着的,真实查出来本机是关闭状态——这可能是Homebrew打包时的配置选择,也可能是环境本身的历史设置,本文没有深挖这个具体原因,只是如实记录了这个意外的起点:接下来的对比,是"真实打开AHI前后",而不是原计划里"AHI默认开着,关掉看看差多少"。
第1遍(刚打开,AHI正在真实建立): 耗时 152114 微秒(约152.1毫秒,几乎和关闭时一样) adaptive_hash_searches: 19866 ← 但真实已经在大量走AHI了 第2遍(AHI真实已经热了): 耗时 108593 微秒(约108.6毫秒,比关闭时快约29%) adaptive_hash_searches: 39866(这一遍又真实新增了约20000次)
每一步都是本文上面用真实存储过程压测跑出来的原始结果。
SET GLOBAL innodb_adaptive_hash_index + information_schema.INNODB_METRICS里的adaptive_hash_*计数器