MYSQL 脏页刷新

本文介绍了MySQL中脏页刷新的原因,包括redo日志切换和buffer pool不足,并分析了其对系统性能的影响,如innodb_max_dirty_pages_pct和innodb_io_capacity参数。讨论了如何通过算法估算刷新速率以及Page cleaner线程的角色,强调了优化脏页刷新以避免性能下降的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

起因

昨天看了优快云推送的一篇《腾讯面试:一条SQL语句执行得很慢的原因有哪些?》

里面主要提到了
1.数据库在刷新脏页的时候会导致SQL很慢
2.锁的问题
3.sql本身的问题

下面主要对刷脏页理解,自己总结下

mysql 刷脏块的几种情况

1.redo日志切换

2.buffer pool不足

3.mysql 自己觉得空闲

4.mysql正常关机

上面的3,4两种情况可以忽略他们对性能的印象。

而 1,2两种情况都有可能会影响mysql整体的性能,其实两种情况的原因是一样的,刷脏页会占用大量的IO资源,会影响到你其他的sql。

第一种情况,redo写满了需要覆盖,覆盖前需要filush没有被写入磁盘的脏页,这种情况是要尽量的避免的,因为这种情况出现,整个系统会不在DML。在5.6之前可能还会阻塞查询。

第二中情况,内存不够了,需要为查询或者更新腾出对应的空闲页,这种情况很常见。

上面还会涉及很多的东西,比如检查点,LRU LIST,FLUSH LIST,FREE LIST .

影响

主要两个方面:

1.innodb_max_dirty_pages_pct

aac84db0f645dde6ffc4b8385d5a1a6e.png

2.innodb_io_capacity

3.innodb_adaptive_flushing(不建议关闭)

InnoDB uses an algorithm to estimate the required rate of flushing, based on the speed of redo log generation and the current rate of flushing. The intent is to smooth overall

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值