选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.0 已于 2015 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

F.24. pg_buffercache #

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

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

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

F.24.1. The pg_buffercache view

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

表 F.14. pg_buffercache Columns

Name Type References Description
bufferid integer   ID, in the range 1..shared_buffers
relfilenode oid pg_class.relfilenode 关系的 filenode 编号
reltablespace oid pg_tablespace.oid Tablespace OID of the relation
reldatabase oid pg_database.oid Database OID of the relation
relblocknumber bigint   关系中的页号
relforknumber smallint   关系中的分支编号
isdirty boolean   Is the page dirty?
usagecount smallint   Page LRU count

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

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

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

F.24.2. Sample output

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.24.3. 作者

Mark Kirkwood

设计建议: Neil Conway

调试建议: Tom Lane

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。