1 脏数据是怎么来的
平常我们去更新数据库的时候,流程是到bufferpool这里时,先去看hash表的数据(表空间号+数据页号)。
如果没有,先从数据页把数据读过来,然后再更新,这个时候因为是更新的缓存页,就会导致缓存页和数据页的数据不一致,最终是会刷到数据页上的。
但是这里会有个问题,不可能说有的缓存页都刷回磁盘。因为有的缓存页是查询的时候缓存到bufferPool的,没有改过。
所以数据库引入了flush链表。这个也是一个双向链表,让所有修改过的缓存页的描述数据块连接起来,这样凡是修改过的缓存页,都会把他描述数据块加入flush链表中,后续就会刷入。
