CHECKPOINT
是一个 SQL 命令,它强制 PostgreSQL 立即执行 检查点
,之后磁盘上的数据文件保证是最新的,直到执行该命令的点。
CHECKPOINT
添加于 PostgreSQL 7.1。
用法
在 PostgreSQL 14 及更早版本中,CHECKPOINT
只能由超级用户执行。
在 PostgreSQL 15 及更高版本中,CHECKPOINT
可以由超级用户或属于 预定义角色 pg_checkpointer 的用户执行。
执行 CHECKPOINT
命令后,pg_stat_bgwriter
中的 checkpoints_req
列将递增。
更改历史记录
- PostgreSQL 7.1
- 添加 (提交 f0e37a85)
示例
执行 CHECKPOINT
命令
postgres=# CHECKPOINT; CHECKPOINT
检查点操作期间的日志文件输出(假设 log_checkpoints
设置为 on
)
[2021-03-29 12:28:06 UTC] LOG: 00000: checkpoint starting: immediate force wait [2021-03-29 12:28:06 UTC] LOG: 00000: checkpoint complete: wrote 33 buffers (0.2%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.001 s, sync=0.001 s, total=0.001 s; sync files=0, longest=0.000 s, average=0.000 s; distance=132 kB, estimate=132 kB
每次执行 CHECKPOINT
命令后,pg_stat_bgwriter
中的 checkpoints_req
列将递增
postgres=# SELECT checkpoints_timed, checkpoints_req FROM pg_stat_bgwriter; checkpoints_timed | checkpoints_req -------------------+----------------- 0 | 0 (1 row) postgres=# CHECKPOINT; CHECKPOINT postgres=# SELECT checkpoints_timed, checkpoints_req FROM pg_stat_bgwriter; checkpoints_timed | checkpoints_req -------------------+----------------- 0 | 1 (1 row)
参考
- PostgreSQL 文档: CHECKPOINT