↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3
历史版本。 PostgreSQL 9.1 已结束支持。 2016-10-27. 请参阅 当前版本手册.

F.27. pg_buffercache #

pg_buffercache 模块提供了一种手段,可实时检查共享缓冲区缓存中正在发生的情况。它还提供了一种底层方式,可出于测试目的从中逐出数据。

该模块提供一个 C 函数pg_buffercache_pages,它返回一组记录;另外还提供一个视图pg_buffercache,该视图封装此函数以便使用。

默认情况下,这两个对象的公共访问权限都已被撤销,以防存在潜在的安全问题。

F.27.1. pg_buffercache 视图

该视图公开的列定义见表 F.16。

表 F.16. pg_buffercache 列

NameTypeReferencesDescription
bufferidinteger ID, in the range 1..shared_buffers
relfilenodeoidpg_class.relfilenodeFilenode number of the relation
reltablespaceoidpg_tablespace.oidTablespace OID of the relation
reldatabaseoidpg_database.oidDatabase OID of the relation
relblocknumberbigint Page number within the relation
relforknumbersmallint Fork number within the relation
isdirtyboolean Is the page dirty?
usagecountsmallint Page LRU count

共享缓存中的每个缓冲区都有一行记录。未使用的缓冲区除了 bufferid 之外,其余字段均显示为 null。共享系统目录显示为属于数据库 0。

由于缓存由所有数据库共享,其中通常会有不属于当前数据库的关系页。这意味着某些行在 pg_class 中可能没有可匹配的行,甚至还可能出现错误的连接结果。如果要与 pg_class 进行连接,最好将连接限制在 reldatabase 等于当前数据库 OID 或 0 的那些行上。

访问 pg_buffercache 视图时,会在足够长的时间内持有内部缓冲区管理器锁,以复制该视图将要显示的全部缓冲区状态数据。这确保了该视图产生一致的结果集,同时又不会对正常缓冲区活动造成超出必要时长的阻塞。尽管如此,如果频繁读取该视图,仍可能对数据库性能产生一定影响。

F.27.2. 示例输出

regression=# SELECT c.relname, count(*) AS buffers
             FROM pg_buffercache b INNER 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()))
             GROUP BY c.relname
             ORDER BY 2 DESC
             LIMIT 10;

             relname             | buffers
---------------------------------+---------
 tenk2                           |     345
 tenk1                           |     141
 pg_proc                         |      46
 pg_class                        |      45
 pg_attribute                    |      43
 pg_class_relname_nsp_index      |      30
 pg_proc_proname_args_nsp_index  |      28
 pg_attribute_relid_attnam_index |      26
 pg_depend                       |      22
 pg_depend_reference_index       |      20
(10 rows)

F.27.3. 作者

Mark Kirkwood

设计建议:Neil Conway

调试建议:Tom Lane

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.