fsync 是一个 配置参数,用于控制是否使用 fsync() 系统调用或等效方法将更新物理写入磁盘以实现崩溃安全性。
fsync 于 PostgreSQL 7.3 中添加。
重要提示:关闭此设置可能导致数据库遭受无法挽回的损坏。
默认
fsync 的默认值为:on。
用法
将 fsync 设置为 off 似乎会带来一些性能优势,但这与生产服务器上高风险的数据损坏相比,是一个非常不利的权衡。
然而,在数据完整性不那么重要的某些情况下,禁用 fsync 可能是有益的,包括:
- 从备份文件中初始化新的数据库集群
- 使用数据库集群处理一批数据,且不需要保留这些数据
- 设置一个只读数据库克隆,该克隆不用于故障转移
- 为开发目的设置测试数据库
按 PostgreSQL 版本详细信息
fsync (PostgreSQL 19)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:fsync
fsync (PostgreSQL 18)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:fsync
fsync (PostgreSQL 17)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:fsync
fsync (PostgreSQL 16)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:fsync
fsync (PostgreSQL 15)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:fsync
fsync (PostgreSQL 14)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:fsync
fsync (PostgreSQL 13)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:fsync
fsync (PostgreSQL 12)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:fsync
fsync (PostgreSQL 11)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:fsync
fsync (PostgreSQL 10)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:fsync
fsync (PostgreSQL 9.6)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:fsync
fsync (PostgreSQL 9.5)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:fsync
fsync (PostgreSQL 9.4)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档:fsync
fsync (PostgreSQL 9.3)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档:fsync
fsync (PostgreSQL 9.2)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档:fsync
fsync (PostgreSQL 9.1)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档:fsync
fsync (PostgreSQL 9.0)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档:fsync
fsync (PostgreSQL 8.4)
| 设置 | 开启 |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档:fsync
fsync (PostgreSQL 8.3)
| 设置 | |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 |
文档:fsync
fsync (PostgreSQL 8.2)
| 设置 | |
| 单位 | |
| 类别 | Write-Ahead Log / 设置 |
| 简短描述 | 强制将更新同步到磁盘。 |
| 扩展描述 | 服务器将在多个地方使用 fsync() 系统调用,以确保更新已物理写入磁盘。这确保了数据库集群在操作系统或硬件崩溃后能够恢复到一致的状态。 |
| 上下文 | sighup |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 |
文档:fsync
变更历史
- PostgreSQL 9.6
- 关于
fsync的 postgresql.conf 条目示例,已修改为指出将fsync设置为off可能导致无法恢复的磁盘损坏。
- 关于
- PostgreSQL 7.3
- 添加于(提交 6a68f426)
参考资料
- PostgreSQL 文档: fsync
有用链接
- 如果你想保留你的数据,请不要设置 fsync=off - 2016 年 4 月 Craig Ringer / EnterpriseDB 的博客文章
反馈
请在此处 提交关于“fsync”的任何评论、建议或更正。