类型: enum
默认: fdatasync
上下文: sighup
重新开始: false
值: [fsync, fdatasync, open_sync, open_datasync]

用来向强制 WAL 更新到磁盘的方法。如果fsync是关闭的,那么这个设置就不相关,因为 WAL 文件更新将根本不会被强制。可能的值是:

  • open_datasync(用open()选项O_DSYNC写 WAL 文件)

  • fdatasync(在每次提交时调用fdatasync()

  • fsync(在每次提交时调用fsync()

  • fsync_writethrough(在每次提交时调用fsync(),强制任何磁盘写高速缓存的直通写)

  • open_sync(用open()选项O_SYNC写 WAL 文件)

open_* 选项也可以使用O_DIRECT(如果可用)。不是在所有平台上都能使用所有这些选择。默认值是列表中第一个被平台支持的那个, 不过fdatasync是 Linux 中的默认值。默认值不一定是最理想的;有可能需要修改这个设置或系统配置的其他方面来创建一个崩溃-安全的配置,或达到最佳性能。这些方面在wal-reliability中讨论。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。

建议 [EN]

On install, PostgreSQL figures out the best method for your OS. It's pretty good at this point; don't change the default. Note that the value of "fsync" shown in your postgresql.conf file is not necessarily the setting the server is using; try SHOW instead.

条评论