fsync
英文手册覆盖始于 PostgreSQL 7.4. 来源历史与运行验证各自保留独立版本边界。
当前阅读 PG 18·选择有来源记录的版本
- boot val
- on
- category
- Write-Ahead Log / Settings
- context
- sighup
- documented
- true
- enumvals
- 未知
- extra desc
- The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This ensures that a database cluster will recover to a consistent state after an operating system or hardware crash.
- lang
- en
- max val
- 未知
- metadata version
- 18
- min val
- 未知
- name
- fsync
- short desc
- Forces synchronization of updates to disk.
- source
- pg-settings-source-snapshot
- unit
- 未知
- vartype
- bool
版本定义 PG 18
如果打开这个参数,PostgreSQL服务器将尝试确保更新被物理地写入到磁盘,做法是发出fsync()系统调用或者使用多种等价的方法(见wal_sync_method)。这保证了数据库集簇在一次操作系统或者硬件崩溃后能恢复到一个一致的状态。
虽然关闭fsync常常可以得到性能上的收益,但当发生断电或系统崩溃时可能造成不可恢复的数据损坏。因此,只有在能很容易地从外部数据中重建整个数据库时才建议关闭fsync。
可以安全关闭fsync的情形包括:从备份文件初始装载一个新数据库集簇;用数据库集簇处理一批数据,处理后就丢弃并重建该数据库;或者使用经常重建且不用于故障切换的只读数据库克隆。仅有高质量硬件不足以成为关闭fsync的理由。
为确保将fsync从关闭改为打开后能够可靠恢复,必须将内核中所有已修改的缓冲区强制写入持久存储。可以在集簇已关闭或fsync已开启时,通过运行initdb --sync-only、运行sync、卸载文件系统或重启服务器来完成。
在很多情况下,为非关键事务关闭synchronous_commit,可以获得关闭fsync所带来的大部分潜在性能收益,同时避免伴随的数据损坏风险。
fsync只能在postgresql.conf文件中或在服务器命令行上设置。如果你关闭这个参数,请也考虑关闭full_page_writes。
比较版本
来源引用
定义来源
center · PostgreSQL 18 · english-manuals:b356cc65656f00502b0a8421f2c8c1f51a387f3a31b19ec4eebee2b5b2bc95ed
正文语言: zh-Hans · 2026-09-11@29c86d9