PG缓冲区管理器以及锁的学习

1.缓冲区管理器结构

共分为三层

第一层为缓冲区表层:存储buffer tag以及buffer tag与buffer id之间的关系。

第二层为缓冲区描述层:信息量最多,最重要的一层,记录了buffer id所对应的缓冲池的地点。

第三层为缓冲区池:专门存储数据缓冲区的内存块,缓冲池被分割成大小为8KB大小的插槽,等于页面大小。因此,每个槽可以存储整个页面。

2.缓冲区管理器的锁

PG缓冲区管理器为许多不同的目的使用许多锁。

锁是缓冲区管理器同步机制的一部分;它们和任何SQL语句和SQL选型都不相关。

在PG中,对象在内存中是并发被访问的(其实任何数据块都是),这个时候为了数据块不被破坏,就需要锁。

缓冲区表层的锁:

BufMappingLock:

缓冲区描述层的锁:

1.content_lock(内容锁):

一种典型的强制访问限制的锁,它可以用于共享和独占模式。

2.io_in_progress_lock():

3.spinlock

3.缓冲区管理器如何工作

(1)访问已存在缓冲区中的数据块

(2)加载数据块到空的缓冲池插槽

(3)加载数据块到一个需要释放的缓冲池插槽

4.缓冲区块替换机制

1.时钟扫描(8.1开始及以后的版本)

2.LRU(8.1以前的版本)

4.Ring buffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值