四、Buffer pool 之 flush 链表
脏数据页
基于 free 链表找到一块空闲的缓存页写入数据后,然后更新了这个缓存页,此时缓存页中的数据就与磁盘中的数据页不一致了,那么这个缓存页就是脏数据或者说脏页。最终在内存里更新的这些脏页是会被刷入磁盘的,但是不可能所有的缓存页都刷入磁盘,因为有些缓存页根本没有更新过。所以需要一个数据结构来保存这些被修改过的数据页。
flush 链表
与 free 链表类似,flush 链表也是一个双向链表,在元数据中同样保存着 flush_pre 和 flush_next 这样一对指针。元数据节点从 free 链表中取出写入数据到缓存页,如果缓存页被修改了,那么该元数据就被加入到 flush 链表,这些 flush 节点就是被修改过的数据页元数据,等待被刷入磁盘。所以通过 flush 就可以知道哪些缓存页是脏页了。


浙公网安备 33010602011771号