数据库学习之为什么mysql会出现”抖“一下的情况

本文探讨了SQL语句执行速度波动的现象,并深入解析了InnoDB中脏页和干净页的概念,阐述了flush脏页的操作及其触发条件,包括redolog满、内存不足、系统空闲及正常关闭时的情况。同时,文章还介绍了InnoDB如何根据主机IO能力和脏页比例等策略控制刷脏页的速度。

1 ”抖“一下情况,是什么样子
一条SQL语句,正常执行的时候特别块,但是有时候不知道为什么会变得特别慢
2 ”脏页“和”干净页“
在将redo log的理论理解过程中,我们把redo log这个位置,理解为黑板。把磁盘这个位置理解为账本。先写黑板,在写账本,先后过程,所以肯定存在数据的不一致。因此,
”脏页“:当内存中的数据页与磁盘中的数据页不一致
”干净页“:当内存中的数据页与磁盘中的数据页一致
3 flush(刷脏页)操作
把内存中的脏页数据写入磁盘的过程
4 什么时候会触发刷脏页操作

  1. 黑板满了,记不下了。即:redo log写满了,这是系统会停止所有的更新操作,对脏页惊醒flush,为redo log腾出空间
  2. 内存不足。淘汰最久未使用的数据页,倘若该数据数据页是干净页,则直接腾出空间; 倘若该数据页是脏页,则先进行flush,再腾出空间
  3. 系统空闲时。直接进行flush
  4. Mysql正常关闭,将内存中的脏页都进行flush

5 InnoDB刷脏页的控制策略
首先,需要正确的告诉InnoDB所在的主机的IO能力,这样InnoDB才能知道需要全力刷脏页时,可以刷多块
其次,需要考虑两个会影响flush的因素。分别是:脏页比列和redo log写盘速度。通过计算的到脏页比列和redo log写盘速度两个具体对应的值,取其中较大的值R,之后引擎就可以按照innodb_io_capacity定义的能力乘以%来控制刷脏页的速度。(< 75%)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值