HTML5技术

InnoDB关键特性之自适应hash索引 - GeaoZhang

字号+ 作者:H5之家 来源:H5之家 2017-07-29 18:02 我要评论( )

一、索引的资源消耗分析 1、索引三大特点 1、小:只在一个到多个列建立索引 2、有序:可以快速定位终点 3、有棵树:可以定位起点,树高一般小于等于3 2、索引的资源消耗点 1、树的高度,顺序访问索引的数据页,索引就是在列上建立的,数据量非常小,在内存中

一、索引的资源消耗分析

1、索引三大特点

  1、小:只在一个到多个列建立索引

  2、有序:可以快速定位终点

  3、有棵树:可以定位起点,树高一般小于等于3

2、索引的资源消耗点

  1、树的高度,顺序访问索引的数据页,索引就是在列上建立的,数据量非常小,在内存中;

  2、数据之间跳着访问

    1、索引往表上跳,可能需要访问表的数据页很多;

    2、通过索引访问表,主键列和索引的有序度出现严重的不一致时,可能就会产生大量物理读;

  资源消耗最厉害:通过索引访问多行,需要从表中取多行数据,如果无序的话,来回跳着找,跳着访问,物理读会很严重。

 

二、自适应hash索引原理

1、原理过程

 

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

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

; Variable_name innodb_adaptive_hash_index row in set (0.01 sec)

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

2、特点

  1、无序,没有树高

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

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

  3、自适应

3、缺陷

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

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

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 小时到分钟 - 一步步优化巨量关键词的匹配 - 枕边书

    小时到分钟 - 一步步优化巨量关键词的匹配 - 枕边书

    2017-07-19 16:11

  • H5新特性:video与audio的使用 - 海*星

    H5新特性:video与audio的使用 - 海*星

    2017-07-02 12:00

  • 就是要你懂Java中volatile关键字实现原理 - 五月的仓颉

    就是要你懂Java中volatile关键字实现原理 - 五月的仓颉

    2017-06-22 11:00

  • HTML5新特性-多线程(Worker SharedWorker) - 大~熊

    HTML5新特性-多线程(Worker SharedWorker) - 大~熊

    2017-04-18 11:01

网友点评