【0324】Postgres内核 Shared Buffer Access Rules (共享缓冲区访问规则)说明
0. 章节内容
1. 共享磁盘缓冲区访问机制 (shared disk buffers)
共享磁盘缓冲区有两套独立的访问控制机制:引用计数(a/k/a pin
计数)和缓冲区内容锁。(实际上,还有第三级访问控制:在访问任何属于某个关系表的页面之前,必须持有该关系表的适当类型的锁。这里不讨论关系级锁。)
-
Pins
在对缓冲区做任何操作之前,必须“对缓冲区pin
”(即增加其引用计数,reference count
)。未pin
的缓冲区随时可能被回收并用于其他页面,因此对其进行操作是不安全的。通常,通过ReadBuffer()
获得pin
,通过ReleaseBuffer()
释放pin
。对于单个后端进程来说,同时pin
一个页面多次是完全正常的; 缓冲区管理器