buffer cache理解(2)

本文详细介绍了数据库系统中BufferCache的内存组织结构及其工作原理。包括CBC链如何通过地址连接缓冲区,LRU机制用于缓存管理,以及脏页如何被记录在检查点队列中。还解释了在查询过程中如何定位数据块并触发物理I/O。

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

buffer cache 内存组织结构 存在多种链(左边是链  右边是buffer(大小相同))

链(chain)

CBC cache buffer chain 以地址的方式将各种buffer连接起来

根据block地址找block的时候,需要使用到CBC chain


怎么实现链的:在每个块上面写上不同地址

查询一个sql的时候,
先查找这条数据存在具体的哪一个块上面(dbf文件),
由此判断存在buffercache的那一条链上面。
然后遍历。如果buffer中没有响应的内存块,则发生物理IO
一个数据块的头部包含了地址和类型
发生物理IO的时候
1、把块的头部(地址、类型)挂载到buffercache的链上
2、并且在链上写一个地址指向buffercache的具体的内存块地址


LRU:最近最少使用(需要将磁盘的block调入内存的时候) 找可用块
buffer的状态
free
clean
dirty


LRUW:dbwr写的时候。 dirty最近最少


CBC:根据CBC查找buffer

检查点队列 1、dirty块 2、按照块第一次dirty的时间点

如果update一个语句
修改buffer后 ,buffer变成dirty
最后会被挂载到 LRUW和检查点队列

非clean块挂载到LRU




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值