Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql变更缓冲区

MySQL变更缓冲区作用、主要配置及查看方法

作者:JhonKI

变更缓冲区用来缓存对二级索引数据的修改,当数据页没有被回载到内存中时,先把修改缓存起来,等到其他查询操作发生时,数据页被加载到内存后,再直接修改内存中的数据页,从而达到减少磁盘I/0的目的,下面给大家介绍MySQL变更缓冲区及查看方法,感兴趣的朋友一起看看吧

前些天发现了一个巨牛的 人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到 网站

🏳️‍🌈一、变更缓冲区的作用?

变更缓冲区用来缓存对 二级索引数据 的修改,当数据页没有被回载到内存中时,先把修改缓存起来,等到其他查询操作发生时,数据页被加载到内存后,再直接修改内存中的数据页,从而达到减少磁盘I/0的目的。

变更缓冲区占用 Buffer Pool 的一部分空间,具体如图所示

场景:如果要修改一条数据,内存与磁盘之间的交互过程是怎么样的

在磁盘中找到对应的数据行数据行所在的数据页加载到内存中在内存中完成对数据行的修改把修改过后的数据页在写回到磁盘中

即,需要两次磁盘IO才能完成一次数据修改操作

变更缓冲区用来缓存对 二级索引数据 的修改,是一个特殊的数据结构

当使用 INSERTUPDATEDELETE 语句修改二级索引对应的数据时,如果对应的数据页在缓冲池中则直接更新,如果不在缓冲池中,那么就把修改操作缓存到变更缓冲区,这样就不用立即从磁盘读取对应的数据页了,当之后的读操作将对应的数据页从磁盘加载到缓冲池中时,变更缓冲区中缓存的修改操作再批量合并到缓冲池,从而达到减少磁盘I/0的目的。执行流程如图所示:

1.1 为什么是二级索引?

1.2 Merge的触发时机有哪些?

🏳️‍🌈二、变更缓冲区的主要配置项都有哪些?

主要的配置项有 缓冲类型更改缓冲区的最大大小

2.1 缓冲类型

在修改二级索引数据时变更缓冲区可以减少磁盘I/0从而提高效率,但是变更缓冲区占用了缓冲池的一部分空间,从而减少了可用于缓存数据页的内存,如果业务场景读多写少,或者表中的二级索引相对较少,那么可以考虑禁用更改缓冲从而提高缓冲池空间。

可以通过选项文件或 SET GLOBAL 语句对系统变量 innodb_change_buffering 进行设置,来控制变更缓冲区对于插入、删除操作(索引记录被标记为删除) 和 清除操作(当索引记录被物理删除时)的开启或禁用:

删除操作: 索引记录被标记为删除
清除操作: 索引记录被物理删除时
更新操作: 是插入和删除操作的组合

all: 默认值,缓存插入、删除标记操作和清除
none:不缓存任何操作
inserts: 只缓存插入操作
deletes: 只缓存删除标记操作
changes: 缓存插入和删除标记操作
purges: 缓存发生在后台的物理删除操作

2.2 更改缓冲区的最大大小

🏳️‍🌈三、怎么查看当前变更缓冲区的信息?

通过使用 SHOW ENGINE InnODB STATUS 访问 InnoDB 标准监视器输出中 INSERTBUFFER AND ADAPTIVE HASH INDEX 部分查看有关更改缓冲区状态的信息。

mysql> SHOW ENGINE INNODB STATUS\G
*************************** 1. row ***************************
Type: InnoDB
Name:
Status:
=====================================
... # 省略
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 0 merges
merged operations:
insert 0, delete mark 0, delete 0
discarded operations:
insert 0, delete mark 0, delete 0
Hash table size 4425293, used cells 32, node heap has 1 buffer(s)
13577.57 hash searches/s, 202.47 non-hash searches/s
... # 省略

👥总结

本篇博文对 【MySQL】变更缓冲区:作用、主要配置以及如何查看 做了一个较为详细的介绍,不知道对你有没有帮助呢!

到此这篇关于MySQL变更缓冲区作用、主要配置及查看方法的文章就介绍到这了,更多相关mysql变更缓冲区内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文