MySQL(七):InnoDB 自适应Hash索引(Adaptive Hash Index)

1、简述

哈希(hash)查找非常快,一般情况下时间复杂度为 O(1),一般仅需要一次查找就能定位。而 B+ 树的查找次数,取决于 B+ 树的高度,B+ 树的高度一般为 34层,因此便需要查询34次。

InnoDB 存储引擎通过观察表上索引页的查询,如果发现建立哈希索引可以提升查询效率,则会自动建立哈希索引,称之为自适应哈希索引(Adaptive Hash Index)。

AHI 是基于缓冲池的B+树构造的索引,因此速度非常快,而且不需要对整张表建立索引。InnoDB 存储引擎会自动根据访问的频率和模式来自动为某些热点页建立哈希索引。

考虑到不同系统的差异,有些系统开启自适应哈希索引可能会导致性能提升不明显,而且为监控索引页查询次数增加了多余的性能损耗, MySQL5.7 更改了 AHI 实现机制,每个 AHI 都分配了特定分区,每个索引都绑定到特定分区,并且每个分区均受单独的锁存器保护。分区由 innodb_adaptive_hash_index_parts 变量控制。默认情况下,innodb_adaptive_hash_index_parts 变量值为8,最大值为 512。

自适应哈希索引功能由 innodb_adaptive_hash_index 变量启用,或者在服务器启动时由–skip-innodb-adaptive-hash-index关闭。

mysql> show variables like "innodb_adaptive_hash_index";
+----------------------------+-------+
| Variable
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值