Majid Azimi Asked: 2012-05-30 02:42:07 +0800 CST2012-05-30 02:42:07 +0800 CST 2012-05-30 02:42:07 +0800 CST fsync 和 synchronous_commit 之间的区别 - postgresql 772 fsync和 和有什么不一样synchronous_commit?我阅读了文档,我唯一理解的是他们都试图将更新物理写入磁盘。 postgresql 1 个回答 Voted Best Answer Daniel Vérité 2012-05-31T02:42:51+08:002012-05-31T02:42:51+08:00 何时fsync关闭,PostgreSQL 服务器将永远不会发出任何fsync系统调用,完全由操作系统决定将哪些块从写入缓存传输到磁盘以及何时传输。数据库引擎永远不知道已经同步了什么。在服务器崩溃的情况下,必须假设数据库处于不一致状态。 何时synchronous_commit关闭,服务器发出fsync调用,但不一定在每个事务的提交时立即发出。它可能会在提交后延迟它们,最多wal_writer_delay乘以 3。默认配置为 600 毫秒。这可以减少 fsync 调用的数量,尤其是对于具有大量小事务的工作负载。在服务器崩溃的情况下,崩溃前最后 600 毫秒内尚未同步的事务可能会回滚,但数据库的状态始终是一致的。
何时
fsync
关闭,PostgreSQL 服务器将永远不会发出任何fsync
系统调用,完全由操作系统决定将哪些块从写入缓存传输到磁盘以及何时传输。数据库引擎永远不知道已经同步了什么。在服务器崩溃的情况下,必须假设数据库处于不一致状态。何时
synchronous_commit
关闭,服务器发出fsync
调用,但不一定在每个事务的提交时立即发出。它可能会在提交后延迟它们,最多wal_writer_delay
乘以 3。默认配置为 600 毫秒。这可以减少 fsync 调用的数量,尤其是对于具有大量小事务的工作负载。在服务器崩溃的情况下,崩溃前最后 600 毫秒内尚未同步的事务可能会回滚,但数据库的状态始终是一致的。