博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 存储引擎对索引的支持
阅读量:5291 次
发布时间:2019-06-14

本文共 1467 字,大约阅读时间需要 4 分钟。

一、首先给出mysql官方文档给出的不同存储引擎对索引的支持

从上面的图中可以得知,mysql 是支持hash索引的,但支持和不支持又和具体的存储引擎有关系。从图中看到InnoDB是支持Btree索引,这是我们众所周知的。但是不支持hash索引。
但是innoDB存储引擎支持hash索引是自适应的,innoDB存储引擎会根据表的使用情况自动为表生成hash索引,不能人为干预是否在一张表中生成hash索引。
 
二、自适应索引的原理

自适应hash索引原理

1、原理过程

 

  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 关闭和打开该功能。

 

转载于:https://www.cnblogs.com/baizhanshi/p/9869782.html

你可能感兴趣的文章
关于jmf不能播放mp3的问题解决
查看>>
Electromagnetic Interference(电磁干扰)
查看>>
内存数据保存到文件
查看>>
hive简介
查看>>
php使用位与运算符【&】位或运算符【|】实现权限管理
查看>>
(转载)Qt:习惯性Qt创建工程的步骤
查看>>
cron
查看>>
IIS上传大文件
查看>>
Neral的前言
查看>>
Centos7 安装高版本php
查看>>
RESTful API 设计指南
查看>>
python-高级编程-05-异步IO
查看>>
MySQL连接服务端的几种方式
查看>>
Floyd
查看>>
Uboot之tftp流程
查看>>
tensorflow的数据读取机制
查看>>
使用solid works 助力NBA | 操作案例
查看>>
2019年春节第一天上班
查看>>
task_statm反映虚拟内存,物理内存
查看>>
更改Visual Studio 2010的主题设置
查看>>