mysql数据落盘详解_MySQL的Flush-List和脏页的落盘机制

一、回顾

mysql启动后buffer pool会初始化。buffer pool也会初始化好n多个空白的缓存页,以及它们的描述数据会被组织成lru链表以及freelist 双向链表。

这时你从磁盘中读取一个数据页,会先从free list中找出一个空闲缓存页的描述信息,然后将你读出的数据页中加载进缓存页中。同时将缓存页的描述信息从free list中剔除,此外该描述信息块还会被维护进lru链表中。

数据页被加载进buffer pool后你就可以对其进行变更操作了。

二、flush list

为了加快响应客户端的速度,mysql会在buffer pool中对数据进行修改,可是一旦你对lru链表中的缓存页做了修改,那该页中的数据和磁盘中的数据页信息就不一致了!大家一般管这种数据页叫做脏页。

为了保证数据的最终一致性,mysql是需要将脏页刷新回磁盘的!

但是问题是:需要将哪些数据页刷新回磁盘呢?

这就引出了flush list~

flush list 和 free list很像,都是由buffer pool中数据描述信息组织而成的双向链表。

77f6a3367e489c05605140eab33a89de.png

一旦你对内存中的缓冲页作出了修改,那该缓冲页对应的描述信息块就会添加进 flush list。这样当buffer pool中的数据页不够用时,我们就可以优先将 flush list中的脏数据页刷新进磁盘中。

如果你读了前几篇文章那你肯定知道

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值