1 pgfincore插件介绍

1.1 pgfincore 核心功能​​

  1. ​​操作系统缓存管理​​

    • 直接操作表/索引在操作系统缓存中的驻留状态
    • 比 pg_prewarm 更细粒度控制(支持 WILLNEED/DONTNEED 等策略)
  2. ​​缓存状态监控​​

    • 查看文件在系统缓存中的分布情况
    • 统计缓存页面的命中率
  3. ​​跨服务器同步​​

    • 生成缓存预热脚本,用于备库快速加载热数据

2 下载与安装

2.1 下载地址

2.1.1 pg官网

https://ftp.postgresql.org/pub/repos/yum/15/redhat/rhel-7.9-x86_64/

2.1.2 github

   GitHub: https://github.com/klando/pgfincore/
   国内gitee也有镜像:   https://gitee.com/mirrors/PgFincore

2.2 安装

2.2.1 yum安装

yum -y install pgfincore_15-1.3.1-1PGDG.rhel7.x86_64.rpm

2.2.2 数据库安装

select * from pg_available_extensions where name='pgfincore';

SET SESSION search_path TO ods;

 CREATE EXTENSION IF NOT EXISTS pgfincore;

3 pgfincore插件使用详解

3.1 查看OS缓存整体情况

select * from pgsysconf();

select * from pgsysconf_pretty();

3.2 查看表的缓存情况

select * from pgfincore('ods_goods_goods_sku_rt');

select * from pgfincore('idx_sku_rt_time_id2');   

3.3 缓存表活索引到OS中

可以把表或者索引预读到Pagecache ,注意如果是分区表,一定要用分区,不要使用表名,pgfincore不支持自动识别分区
通过给表或者索引的文件设置 WILLNEED flag,让操作系统尽可能的加载数据文件块到PageCache。

select * from pgfincore('ods_goods_goods_sku_rt');
select * from pgfadvise_willneed('ods_goods_goods_sku_rt');

 

3.4 删除表活索引再OS中的缓存

select * from pgfincore('ods_goods_goods_sku_rt');
select * from pgfadvise_dontneed('ods_goods_goods_sku_rt');

3.5 查看所有表的OS缓存情况

SET SESSION search_path TO ods;

SELECT
c.relname AS 对象名,
c.relkind AS 类型, -- 'r'=表, 'i'=索引
SUM(f.pages_mem) AS 缓存页数,
(SUM(f.pages_mem) * 4096) / 1024 / 1024 AS 缓存大小_MB,
(SUM(f.pages_mem) * 100.0 / SUM(f.rel_os_pages))::numeric(5,2) AS 缓存率
FROM
pg_class c
JOIN
pgfincore(c.oid) f ON true
WHERE
c.relkind IN ('r', 'i') -- 过滤表和索引
AND c.relnamespace NOT IN ('pg_catalog'::regnamespace, 'information_schema'::regnamespace) -- 排除系统表
GROUP BY
c.relname, c.relkind
ORDER BY
缓存大小_MB DESC;

 

 posted on 2025-04-27 17:49  xibuhaohao  阅读(33)  评论(0)    收藏  举报