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