INNODB引擎的4大特性

技术INNODB引擎的4大特性 INNODB引擎的4大特性1、插入缓存
2、二次写
3、自适应哈希
4、预读
一、插入缓存(insert buffer)
插入缓冲(insert Buffer/Chang

INNODB发动机的四大特点

1.插入缓存

2.写两遍。

3.自适应散列

4.预读一、插入缓存(insert buffer)

插入缓冲区/更改缓冲区:提高插入性能。变更缓冲区是插入缓冲区的增强,只对插入有效,变更缓冲区对插入、删除、更新(删除插入)和清除有效。

它只对插入和更新非聚集索引(非唯一)有效。每次插入都不写入索引页,而是先判断插入的非聚集索引页是否在缓冲池中,如果在,则插入字节;如果没有,先放入插入缓冲区,在按照一定的效率进行合并操作,在写会Disk.这通常会将多个插入合并到一个操作中,目的还是为了减少随机IO带来性能损耗。.

使用插入缓冲区的条件:

非聚集索引

非唯一索引

更改缓冲区作为缓冲池的一部分存在。Innodb_change_buffering参数缓存对应的操作:(更新将被视为删除插入)

Innodb_change_buffering:设置值为:插入、删除、范围、更改(插入和删除)、全部(默认)、无。

All:默认值,缓存插入、删除、清除操作。

插入:缓存插入操作。

Deletes:缓存删除操作。

更改:缓存插入和删除操作。

Purges:缓存后台心脏的物理删除操作。

它的使用范围可以通过参数来控制:

Innodb_change_buffer_max_size,默认为25%,即缓冲池的1/4,最多可以设置为1/2。当MySql实例中有大量修改操作时,考虑Innodb_change_buffer_max_size有多大。

以某一频率合并的条件是什么?

辅助索引页被读入缓存池,普通选择首先检查非聚集索引页是否存在于插入缓冲区中,如果存在,则合并并插入它。

辅助索引页没有可用空间。如果空间小于页面大小的1/32,将强制执行合并操作。

每秒和每10秒的主合并操作。

二、二次写(Double wite)

DoubleWrite缓存位于系统表空间的存储区域,用于在Innodb Buffer池中刷新后、写入数据文件前缓存Innodb的数据页。因此,当操作系统或数据库进程在将数据页写入磁盘的过程中崩溃时,Innodb可以在DoubleWrite缓存中找到数据页的备份,并使用它来执行崩溃恢复。将数据页写入双写缓存的操作所需的IO消耗,该数据页将被写入一个大的连续块中。

在应用重做日志之前,用户需要一份页面的副本。当写入失败时,页面的副本用于恢复页面未被重做,这就是双写。

双写的构成:

内存中双写缓冲区的大小是2M。

物理磁盘上的共享表空间中有128个连续页面,即2个扩展页面,大小与2M相同。

当缓冲池中的脏页被刷新时,脏页将被memcpy()函数照片打印到内存中的Double Write Buffer,然后被Double Write分成两次,每次1M被顺序写入共享表空间的物理磁盘。在这个项目中,由于Double Write页面是连续的,这个过程是按顺序写的,成本不大。双写页写入后,双写缓冲区中的页被写入每个表空间文件,此时的写入是离散的。如果操作系统在将页面写入磁盘的过程中崩溃,Innodb可以从共享表空间中的Double Write中找到页面的副本,将其复制到表空间文件中,然后应用重做日志。

三、自适应哈希索引(AHI)

Adaptive Hash索引属性使Innodb更像内存中的数据库,可以通过Innodb_adaptive_hash_index打开,也可以通过参数—— skip-Innodb _ Adaptive _ Hash _ index关闭。

注意:自适应哈希可以关闭。

生成哈希索引的条件很苛刻。

索引被访问过17次吗?

索引中的一个页面已经被访问了100次。

访问模式必须

须是一样的。
例如对于(a、p)访问模式情况:
where a = xxx
where a = xxx and b = xxx

Innodb存储引擎会监控对表上二级索引的查找,如果发现某二级索引被频繁访问 ,二级索引成为 热数据,建立哈希索引可以代理速度的提升。
经常访问的二级索引数据会自动被生成到hash索引里面去(最近连续被访问三次的数据),自适应哈希索引通过缓冲池的B+树构造而来,因此建立的速度很快。
哈希(Hash)是一种非常快的等值查找方法,一般情况下这种查找的时间复杂度为O(1) 即一般仅需要一次查找就能定位数据,而B+树的查找次数,取决于B+树的高度,在生产环境中,B+树的高度一般是3、4层,故需要3-4次的查询。

Innodb会监控对表上个索引页的查询,如果观察到简历哈希索引可以带来速度提升,则自动建立哈希索引,称之为自适应哈希索引(Adaptive Hash Index,AHI)

特点:

  1. 无序,没有树高
  2. 降低对二级索引树的频繁访问资源,索引树高=4 访问索引:访问树,根节点,叶子节点。
  3. 自适应
    缺陷:
  4. jash自适应索引会占用Innodb buffer pool
  5. 自适应hash索引只适合搜索等值的查询,如select * from table where index_col='xxx' 而对于其他查找类型,如范围查找,是不能使用的。
  6. 极端情况下,自适应hash索引才有比较大的意义,可以减低逻辑读。

四、预读
Innodb使用两种预读算法来提高I/O性能:线性预读(linear read_ahead)和随机预读(randomread-ahead)为了区分这两种预读的方式,我们可以吧线性预读放到以extent为单位,而随机读放到exent中的page为单位,线性预读着眼于降下一个extent提前读取到 buffer pool中,而随机预读着眼于extent中的剩余的page提前读取到buffer pool中。

原文为:https://www.cnblogs.com/zhs0/p/10528520.html

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/117966.html

(0)

相关推荐

  • SPARK2和Phoenix集成的方法是什么?

    技术SPARK2与Phoenix整合的方法是什么本篇内容主要讲解“SPARK2与Phoenix整合的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SPARK2与Ph

    攻略 2021年12月16日
  • 汇编 | 8086 DEBUG调试学习笔记

    技术汇编 | 8086 DEBUG调试学习笔记 汇编 | 8086 DEBUG调试学习笔记在8086汇编中DEBUG是个非常实用的工具,并且可以非常明了的查看每一步指令每一个段的相对状态,有利于学习。下

    礼包 2021年11月13日
  • 晋陶渊明独爱菊,虽艳无俗姿太皇真富贵的完整诗句

    技术晋陶渊明独爱菊,虽艳无俗姿太皇真富贵的完整诗句爱国诗人一心想着报效祖国,杀敌立功晋陶渊明独爱菊。但南宋小朝廷不容许他这样的爱国将士的积极抗战活动。当时王炎因之调离川陕,陆游也被解除成都安抚使参议官之职,正是“渭水岐山

    生活 2021年10月29日
  • 如何在线将传统模式复制改为GTID复制模式

    技术如何在线将传统模式复制改为GTID复制模式这篇文章将为大家详细讲解有关如何在线将传统模式复制改为GTID复制模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.在每一台服务器上设

    攻略 2021年11月2日
  • Vue正则写法是什么

    技术Vue正则写法是什么这篇文章主要讲解了“Vue正则写法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue正则写法是什么”吧!前言正则表达式,又称规则表达式。它

    攻略 2021年11月1日
  • sparkmllib实战例子(sparkmllib学习方法)

    技术基于Spark Mllib文本分类的示例分析这篇文章将为大家详细讲解有关基于Spark Mllib文本分类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。基于Spark M

    攻略 2021年12月16日