pgfincore
检查和管理操作系统缓冲区缓存
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pgfincore | 1.3.1 | ADMIN | BSD 3-Clause | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 5060 | pgfincore | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | pg_cooldown pgcozy fio pg_prewarm pgmeminfo pg_buffercache pg_repack pg_rewrite |
|---|
pg18 el fixed by vonng
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 1.3.1 | 1817161514 | pgfincore | - |
| RPM | PGDG | 1.3.1 | 1817161514 | pgfincore_$v | - |
| DEB | PGDG | 1.3.1 | 1817161514 | postgresql-$v-pgfincore | - |
构建
您可以使用 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 提供使用 mincore 和 POSIX_FADVISE 检查和管理 PostgreSQL 关系的操作系统页缓存内容的函数。
检查缓存状态
SELECT * FROM pgfincore('pgbench_accounts');
返回每段信息:relpath、segment、os_page_size、rel_os_pages、pages_mem(OS 缓存中的页数)、group_mem、os_pages_free、pages_dirty、group_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');