pgfincore

检查和管理操作系统缓冲区缓存

概览

扩展包名版本分类许可证语言
pgfincore1.3.1ADMINBSD 3-ClauseC
ID扩展名BinLibLoadCreateTrustReloc模式
5060pgfincore-
相关扩展pg_cooldown pgcozy fio pg_prewarm pgmeminfo pg_buffercache pg_repack pg_rewrite

pg18 el fixed by vonng

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG1.3.11817161514pgfincore-
RPMPGDG1.3.11817161514pgfincore_$v-
DEBPGDG1.3.11817161514postgresql-$v-pgfincore-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
PGDG 1.2.4
PGDG 1.2.4
el10.x86_64
el10.aarch64
d12.x86_64
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
d12.aarch64
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
d13.x86_64
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
d13.aarch64
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
u22.x86_64
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
u22.aarch64
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
u24.x86_64
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
u24.aarch64
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1
PGDG 1.3.1

构建

您可以使用 pig build 命令构建 pgfincore 扩展的 RPM / DEB 包:

pig build pkg pgfincore         # 构建 RPM / DEB 包

安装

您可以直接安装 pgfincore 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:

pig repo add pgdg -u          # 添加 PGDG 仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pgfincore;          # 当前活跃 PG 版本安装
pig ext install -y pgfincore -v 18  # PG 18
pig ext install -y pgfincore -v 17  # PG 17
pig ext install -y pgfincore -v 16  # PG 16
pig ext install -y pgfincore -v 15  # PG 15
pig ext install -y pgfincore -v 14  # PG 14
dnf install -y pgfincore_18       # PG 18
dnf install -y pgfincore_17       # PG 17
dnf install -y pgfincore_16       # PG 16
dnf install -y pgfincore_15       # PG 15
dnf install -y pgfincore_14       # PG 14
apt install -y postgresql-18-pgfincore   # PG 18
apt install -y postgresql-17-pgfincore   # PG 17
apt install -y postgresql-16-pgfincore   # PG 16
apt install -y postgresql-15-pgfincore   # PG 15
apt install -y postgresql-14-pgfincore   # PG 14

创建扩展

CREATE EXTENSION pgfincore;

用法

pgfincore: 检查和管理操作系统缓冲区缓存

pgfincore 提供使用 mincorePOSIX_FADVISE 检查和管理 PostgreSQL 关系的操作系统页缓存内容的函数。

检查缓存状态

SELECT * FROM pgfincore('pgbench_accounts');

返回每段信息:relpathsegmentos_page_sizerel_os_pagespages_mem(OS 缓存中的页数)、group_memos_pages_freepages_dirtygroup_dirty

使用 pgfincore('relation', true) 可包含用于快照/恢复的 databit varbit 映射。

系统信息

SELECT * FROM pgsysconf();          -- os_page_size, os_pages_free, os_total_pages
SELECT * FROM pgsysconf_pretty();   -- 相同内容,人类可读格式输出

预加载到 OS 缓存

SELECT * FROM pgfadvise_willneed('pgbench_accounts');

从 OS 缓存中驱逐

SELECT * FROM pgfadvise_dontneed('pgbench_accounts');

其他 POSIX_FADVISE 标志

SELECT * FROM pgfadvise_normal('relation');
SELECT * FROM pgfadvise_sequential('relation');
SELECT * FROM pgfadvise_random('relation');

快照和恢复缓存状态

-- 快照
CREATE TABLE pgfincore_snapshot AS
  SELECT 'pgbench_accounts'::text AS relname, *, now() AS date_snapshot
  FROM pgfincore('pgbench_accounts', true);

-- 恢复
SELECT * FROM pgfadvise_loader('pgbench_accounts', 0, true, true,
               (SELECT databit FROM pgfincore_snapshot
                WHERE relname = 'pgbench_accounts' AND segment = 0));

直接页缓存控制

-- 加载前 3 页,卸载后 3 页
SELECT * FROM pgfadvise_loader('pgbench_accounts', 0, true, true, B'111000');
-- 仅加载
SELECT * FROM pgfadvise_loader('pgbench_accounts', 0, true, false, B'111000');
-- 仅卸载
SELECT * FROM pgfadvise_loader('pgbench_accounts', 0, false, true, B'111000');

最后修改 2026-03-14: update extension metadata (953cbd0)