四、Buffer pool 之 flush 链表

脏数据页

  基于 free 链表找到一块空闲的缓存页写入数据后,然后更新了这个缓存页,此时缓存页中的数据就与磁盘中的数据页不一致了,那么这个缓存页就是脏数据或者说脏页。最终在内存里更新的这些脏页是会被刷入磁盘的,但是不可能所有的缓存页都刷入磁盘,因为有些缓存页根本没有更新过。所以需要一个数据结构来保存这些被修改过的数据页。

flush 链表

  与 free 链表类似,flush 链表也是一个双向链表,在元数据中同样保存着 flush_pre 和 flush_next 这样一对指针。元数据节点从 free 链表中取出写入数据到缓存页,如果缓存页被修改了,那么该元数据就被加入到 flush 链表,这些 flush 节点就是被修改过的数据页元数据,等待被刷入磁盘。所以通过 flush 就可以知道哪些缓存页是脏页了。

 

posted @   维维尼~  阅读(95)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示