pg_prewarm
预热关系数据
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_prewarm | 1.2 | ADMIN | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 5890 | pg_prewarm | 否 | 是 | 是 | 是 | 否 | 否 | - |
版本
| PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|
| 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
安装
提示:这是 PostgreSQL 内核自带的 contrib 扩展
SQL
用法
pg_prewarm 扩展提供将关系数据加载到操作系统缓冲区缓存或 PostgreSQL 缓冲区缓存的函数,减少后续查询的 I/O 延迟。
预热关系
SQL
函数签名
SQL
返回预热的块数。
| 参数 | 描述 |
|---|---|
mode | prefetch(异步 OS)、read(同步 OS)或 buffer(PG 缓存) |
fork | 要预热的关系分支(例如 main、fsm、vm) |
first_block | 起始块号(默认:0) |
last_block | 结束块号(默认:关系的最后一个块) |
自动预热
通过 shared_preload_libraries 加载时,自动预热会定期将共享缓冲区缓存中的缓冲区列表保存到磁盘,并在重启时恢复。
SQL
GUC 参数
| 参数 | 默认值 | 描述 |
|---|---|---|
pg_prewarm.autoprewarm | true | 启用自动预热后台工作进程 |
pg_prewarm.autoprewarm_interval | 300s | autoprewarm.blocks 文件更新间隔(0 = 仅在关闭时转储) |
缓冲区状态保存到数据目录中的 autoprewarm.blocks 文件。重启后,两个后台工作进程会重新加载保存的缓冲区。