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)

相关推荐

  • MySQL是如何保证数据不丢的

    技术MySQL是如何保证数据不丢的本篇内容主要讲解“MySQL是如何保证数据不丢的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL是如何保证数据不丢的”吧!

    攻略 2021年12月8日
  • 令字加偏旁,“令”加什么偏旁变成新字

    技术令字加偏旁,“令”加什么偏旁变成新字令字可以加令字加偏旁: 冫偏旁,组词新字是:冷。令字可以加: 山偏旁,组词新字是:岭。令字可以加: 王偏旁,组词新字是:玲。令字可以加:亻偏旁,组词新字是:伶。冷拼音:lěng

    生活 2021年10月28日
  • 怎么使用Java打造一款简单的英语学习系统

    技术怎么使用Java打造一款简单的英语学习系统本篇内容介绍了“怎么使用Java打造一款简单的英语学习系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希

    攻略 2021年10月22日
  • 吉吉国王是什么梗,嘉吉公司的嘉吉优势是什么

    技术吉吉国王是什么梗,嘉吉公司的嘉吉优势是什么供应链管理 供应链管理概念的产生和发展与信息技术的应用密不可分吉吉国王是什么梗。可以说没有当今高速发展的信息技术,供应链管理就不可能实施。 加强物流 对于嘉吉公司来说,

    生活 2021年10月29日
  • 调表不调账,财务)

    技术调表不调账,财务) 调表不调账(财务)账里的数字一定要在报表中有所体现,报表中的数字却不一定要跟账完全一致,听起来不可思议,其实是有道理的,主要原因是两者的功能不完全一样。
    财务报表是编制给管理层和

    礼包 2021年12月6日
  • 如何解决python中的try except与R语言中的tryCatch异常问题

    技术如何解决python中的try except与R语言中的tryCatch异常问题小编给大家分享一下如何解决python中的try except与R语言中的tryCatch异常问题,希望大家阅读完这篇文章之后都有所收获

    攻略 2021年11月14日