pg_buffercache

一个提供共享缓冲区缓存统计信息的 Contrib 模块

pg_buffercache 是一个提供关于共享缓冲区缓存的实时统计信息的Contrib 模块

pg_buffercachePostgreSQL 8.1 中添加。

扩展对象

pg_buffercache 提供了一个函数 pg_buffercache_pages() 和一个便利视图 pg_buffercache,返回关于服务器共享缓冲区缓存状态的信息。

视图和扩展都将为每个共享缓冲区返回一条记录。请注意,可能会为其他数据库正在使用的缓冲区返回记录。

PostgreSQL 16 开始,以下函数也可用

  • pg_buffercache_summary()
  • pg_buffercache_usage_counts()

PostgreSQL 17 开始,还提供了以下开发者函数

  • pg_buffercache_evict()

变更历史

示例

获取特定表的样本输出

postgres=# SELECT * FROM pg_buffercache WHERE relfilenode = pg_relation_filenode('foo') LIMIT 1\x\g\x

-[ RECORD 1 ]----+------
bufferid         | 1962
relfilenode      | 19246
reltablespace    | 1663
reldatabase      | 11134
relforknumber    | 0
relblocknumber   | 0
isdirty          | f
usagecount       | 5
pinning_backends | 0

仅提取当前数据库中表的记录的查询

    SELECT n.nspname, c.relname, bc.*
      FROM pg_buffercache bc
INNER JOIN pg_class c ON c.oid=pg_filenode_relation(bc.reltablespace, bc.relfilenode)
INNER JOIN pg_namespace n ON c.relnamespace = n.oid
     WHERE bc.reldatabase = (SELECT oid FROM pg_database WHERE datname = current_database())
  ORDER BY 1,2;

分类

Contrib 模块数据一致性和取证扩展PostgreSQL 内部

反馈

提交任何关于 "pg_buffercache" 的评论、建议或更正 在此