PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 F. 额外提供的模块 | 下一页

# F.24. pg_buffercache

`pg_buffercache`模块提供实时检查共享缓存内发生了什么的用途。

该模块提供一个C函数`pg_buffercache_pages`，该函数返回一个记录集， 加上一个包裹该函数为了方便使用的视图`pg_buffercache`。

缺省情况下取消这两种的公共访问，以防隐藏的安全问题。

## F.24.1. `pg_buffercache` 视图

被视图暴露的字段的定义显示在表 F-14里。

表 F-14. `pg_buffercache` 字段

名字 | 类型 | 引用 | 描述
--- | --- | --- | ---
`bufferid` | `integer` |  | ID, 范围为 1..`shared_buffers`
`relfilenode` | `oid` | `pg_class.relfilenode` | 关系的文件节点号
`reltablespace` | `oid` | `pg_tablespace.oid` | 关系的表空间OID
`reldatabase` | `oid` | `pg_database.oid` | 关系的数据库OID
`relblocknumber` | `bigint` |  | 关系的页码
`relforknumber` | `smallint` |  | 关系的分支编号; 参阅 `include/storage/relfilenode.h`
`isdirty` | `boolean` |  | 页脏了吗？
`usagecount` | `smallint` |  | 时钟下摆访问计数

在共享缓存中每个缓冲区都有一行记录。未使用的缓冲区显示为所有字段为空，除了`bufferid`。 共享的系统目录显示为属于数据库零。

因为缓存被所有数据库共享，通常有几页的关系不属于当前数据库。 这意味着某些行在`pg_class`中没有匹配的连接行， 或者甚至有不正确的连接。如果你尝试连接`pg_class`， 限制连接到的行的`reldatabase`等于当前数据库的OID或0是个好主意。

当访问`pg_buffercache`视图时，认为内部缓冲区锁管理器足够长， 能够拷贝视图将显示的所有的缓冲区状态数据。这保证了视图产生一个一致的结果集， 当不再需要阻塞正常的缓冲区活动时。但是，如果频繁的阅读这个视图， 可能会对数据库性能造成一些影响。

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

Mark Kirkwood `<markir@paradise.net.nz>`

设计建议：Neil Conway `<neilc@samurai.com>`

调试建议：Tom Lane `<tgl@sss.pgh.pa.us>`

上一页 | 起始页 | 下一页
passwordcheck | 上一级 | pgcrypto