# F.25.pg_缓冲缓存
F.25.1.这个pg_缓存
看法F.25.2.样本输出F.25.3.作者
这个pg_缓存
模块提供了一种实时检查共享缓冲区缓存中发生了什么的方法。
该模块提供C函数pg_缓存_页面
返回一组记录和一个视图pg_缓存
为了方便使用,它对功能进行了包装。
默认情况下,使用仅限于超级用户和pg_监视器
角色其他人可以使用授予
.
# F.25.1.那个pg_缓存
看法
视图显示的列的定义如所示表F.15.
表F.15.pg_缓存
柱
列类型 描述 |
---|
缓冲ID 整数 ID,范围为1.。 共享缓冲区 |
重新文件节点 老年人 (参考文献)pg_类 .重新文件节点 )关系的Filenode编号 |
表空间 老年人 (参考文献)pg_表空间 .老年人 )关系的表空间OID |
rel数据库 老年人 (参考文献)pg_数据库 .老年人 )关系的数据库OID |
重新分配号码 短整型 关系中的叉号;看见 公共/重路径。H |
重新分组号码 比基特 关系中的页码 |
伊斯迪蒂 布尔值 这页脏了吗? |
用法计数 短整型 时钟扫描访问计数 |
钉住后端 整数 固定此缓冲区的后端数 |
共享缓存中的每个缓冲区都有一行。未使用的缓冲区显示为空,除缓冲ID
.共享系统目录显示为属于数据库0.
由于缓存由所有数据库共享,因此通常会有来自不属于当前数据库的关系的页面。这意味着在中可能没有匹配的联接行pg_类
对于某些行,甚至可能存在不正确的联接。如果你想加入反对pg_类
,将连接限制为具有rel数据库
等于当前数据库的OID或零。
由于不会使用缓冲区管理器锁来复制视图将显示的缓冲区状态数据,因此访问pg_缓存
视图对正常缓冲区活动的影响较小,但它不能在所有缓冲区中提供一致的结果集。然而,我们确保每个缓冲区的信息是自一致的。
# F.25.2.样本输出
regression=# SELECT n.nspname, c.relname, count(*) AS buffers
FROM pg_buffercache b JOIN pg_class c
ON b.relfilenode = pg_relation_filenode(c.oid) AND
b.reldatabase IN (0, (SELECT oid FROM pg_database
WHERE datname = current_database()))
JOIN pg_namespace n ON n.oid = c.relnamespace
GROUP BY n.nspname, c.relname
ORDER BY 3 DESC
LIMIT 10;
nspname | relname | buffers
### F.25.3. Authors
Mark Kirkwood `<[markir@paradise.net.nz](mailto:markir@paradise.net.nz)>`
Design suggestions: Neil Conway `<[neilc@samurai.com](mailto:neilc@samurai.com)>`
Debugging advice: Tom Lane `<[tgl@sss.pgh.pa.us](mailto:tgl@sss.pgh.pa.us)>`