mysql引擎支持的索引_mysql 存储引擎对索引的支持

自适应hash索引原理

1、原理过程

71c36f81cc71920d8ecf9a0010696831.png

Innodb存储引擎会监控对表上二级索引的查找,如果发现某二级索引被频繁访问,二级索引成为热数据,建立哈希索引可以带来速度的提升,则:

1、自适应hash索引功能被打开

mysql> show variables like '%ap%hash_index';

+----------------------------+-------+

| Variable_name | Value |

+----------------------------+-------+

| innodb_adaptive_hash_index | ON |

+----------------------------+-------+

1 row in set (0.01 sec)

2、经常访问的二级索引数据会自动被生成到hash索引里面去(最近连续被访问三次的数据),自适应哈希索引通过缓冲池的B+树构造而来,因此建立的速度很快。

2、特点

1、无序,没有树高

2、降低对二级索引树的频繁访问资源

索引树高<=4,访问索引:访问树、根节点、叶子节点

3、自适应

3、缺陷

1、hash自适应索引会占用innodb buffer pool;

2、自适应hash索引只适合搜索等值的查询,如select * from table where index_col='xxx',而对于其他查找类型,如范围查找,是不能使用的;

3、极端情况下,自适应hash索引才有比较大的意义,可以降低逻辑读。

三、监控与关闭

1、状态监控

mysql> show engine innodb status\G

……

Hash table size 34673, node heap has 0 buffer(s)

0.00 hash searches/s, 0.00 non-hash searches/s

1、34673:字节为单位,占用内存空间总量

2、通过hash searches、non-hash searches计算自适应hash索引带来的收益以及付出,确定是否开启自适应hash索引

2、限制

1、只能用于等值比较,例如=, <=>,in

2、无法用于排序

3、有冲突可能

4、MySQL自动管理,人为无法干预。

3、自适应哈希索引的控制

由于innodb不支持hash索引,但是在某些情况下hash索引的效率很高,于是出现了adaptive hash index功能,但是通过上面的状态监控,可以计算其收益以及付出,控制该功能开启与否。

默认开启,建议关掉,意义不大。可以通过 set global innodb_adaptive_hash_index=off/on 关闭和打开该功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值