wal_sync_method 是一个 配置参数,用于决定将WAL更新强制写入磁盘的方法。
wal_sync_method 在 PostgreSQL 7.1 中添加。
用法
wal_sync_method 可以设置为以下值之一:
open_datasync |
使用 open() 选项 O_DSYNC 写入WAL文件 |
fdatasync |
每次提交时调用 fdatasync() |
fsync |
每次提交时调用 fsync() |
fsync_writethrough |
每次提交时调用 fsync(),强制写入任何磁盘写缓存(write-through) |
open_sync |
使用 open() 选项 O_SYNC 写入WAL文件 |
可以使用实用工具 pg_test_fsync 来确定在本地操作系统上 wal_sync_method 最快的设置值。
默认值
wal_sync_method 的默认值为:
- Linux 和 FreeBSD:
fdatasync - 其他操作系统:表中第一个被操作系统支持的方法
按 PostgreSQL 版本详细信息
wal_sync_method (PostgreSQL 19)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: wal_sync_method
wal_sync_method (PostgreSQL 18)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: wal_sync_method
wal_sync_method (PostgreSQL 17)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: wal_sync_method
wal_sync_method (PostgreSQL 16)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: wal_sync_method
wal_sync_method (PostgreSQL 15)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: wal_sync_method
wal_sync_method (PostgreSQL 14)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: wal_sync_method
wal_sync_method (PostgreSQL 13)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: wal_sync_method
wal_sync_method (PostgreSQL 12)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: wal_sync_method
wal_sync_method (PostgreSQL 11)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: wal_sync_method
wal_sync_method (PostgreSQL 10)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: wal_sync_method
wal_sync_method (PostgreSQL 9.6)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: wal_sync_method
wal_sync_method (PostgreSQL 9.5)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: wal_sync_method
wal_sync_method (PostgreSQL 9.4)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 |
文档: wal_sync_method
wal_sync_method (PostgreSQL 9.3)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 |
文档: wal_sync_method
wal_sync_method (PostgreSQL 9.2)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 |
文档: wal_sync_method
wal_sync_method (PostgreSQL 9.1)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 |
文档: wal_sync_method
wal_sync_method (PostgreSQL 9.0)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 |
文档: wal_sync_method
wal_sync_method (PostgreSQL 8.4)
| 设置 | fdatasync |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | fsync, fdatasync, open_sync, open_datasync |
| 启动值 | fdatasync |
| 重置值 | fdatasync |
| 源文件 | |
| 源行 |
文档: wal_sync_method
wal_sync_method (PostgreSQL 8.3)
| 设置 | |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | string |
| 来源 | 默认 |
| 最小值 | |
| 最大值 |
文档: wal_sync_method
wal_sync_method (PostgreSQL 8.2)
| 设置 | |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 选择将WAL更新强制写入磁盘所用的方法。 |
| 扩展描述 | |
| 上下文 | sighup |
| 变量类型 | string |
| 来源 | 默认 |
| 最小值 | |
| 最大值 |
文档: wal_sync_method
变更历史
- PostgreSQL 17
- 在Windows上移除了
fsync_writethrough选项 (commit 8c852ba9)
- 在Windows上移除了
- PostgreSQL 16
- 现在Windows支持
fdatasync选项 (commit 9430fb40)
- 现在Windows支持
- PostgreSQL 14
- FreeBSD上的默认值已更改为
fdatasync(commit f900a79e)
- FreeBSD上的默认值已更改为
- PostgreSQL 9.1
- Linux上的默认值已更改为
fdatasync(commit 576477e7)
- Linux上的默认值已更改为
- PostgreSQL 7.1
- 已添加 (commit 9d645fd8)
参考资料
- PostgreSQL 文档: wal_sync_method
