CHECKPOINT
CHECKPOINT — 强制执行一次预写式日志检查点
大纲
CHECKPOINT [ (option[, ...] ) ] 其中option可以是: FLUSH_UNLOGGED [boolean] MODE { FAST | SPREAD }
描述
检查点是预写式日志序列中的一个位置,到这一位置时,永久关系的所有数据文件都已更新,以反映日志中的信息。永久关系文件的所有数据都会被刷写到磁盘。除非指定 FLUSH_UNLOGGED,否则不会刷写不记录 WAL 的关系的脏缓冲区。有关检查点期间会发生什么的更多细节,参见第 28.5 节。
默认情况下,CHECKPOINT 命令会在发出该命令时强制执行一个快速检查点,而不是等待系统安排的常规检查点(由第 19.5.2 节中的设置控制)。若要请求将检查点分散到更长的时间内,可将 MODE 选项设为
SPREAD。CHECKPOINT 并非设计用于正常运行期间。
服务器可能会合并同时请求的检查点。这类合并后的请求将包含一组合并后的选项。例如,如果一个会话请求快速检查点,而另一个会话请求分散检查点,服务器可能会合并这些请求并执行一个快速检查点。
如果在恢复期间执行 CHECKPOINT 命令,它将强制执行一个重启点(见第 28.5 节),而不是写入一个新的检查点。
只有超级用户,或者具有 pg_checkpoint 角色权限的用户,才能调用 CHECKPOINT。
参数
FLUSH_UNLOGGED#通常,
CHECKPOINT不会刷写不记录 WAL 的关系的脏缓冲区。该选项默认关闭,启用后会将不记录 WAL 的关系刷写到磁盘。MODE#当设为
FAST时,这是默认值,请求的检查点会尽可能快地完成,这可能导致检查点期间的 I/O 速率显著升高。MODE也可以设为SPREAD,以请求将检查点分散到更长的时间内(由第 19.5.2 节中的设置控制),类似于系统安排的常规检查点。这可以降低检查点期间的 I/O 速率。boolean#指定所选选项应开启还是关闭。你可以使用
TRUE、ON或1来启用该选项,使用FALSE、OFF或0来禁用它。boolean值也可以省略,此时默认视为TRUE。
兼容性
CHECKPOINT 命令是
PostgreSQL 的一种语言扩展。