PostgreSQL9.6 为配置参数 synchronous_commit 添加了新的设置 remote_apply ,看了下面的文档我还是不明白设置on和remote_apply的区别。谁能帮我?多谢 。
同步提交(枚举)
指定在命令向客户端返回“成功”指示之前事务提交是否将等待 WAL 记录写入磁盘。有效值为 on、remote_apply、remote_write、local 和 off。谁能帮我?多谢。
当设置为 on 时,提交将等待,直到来自当前同步备用数据库的回复表明它们已收到事务的提交记录并将其刷新到磁盘。这确保事务不会丢失,除非主数据库和所有同步备用数据库都遭受数据库存储损坏。当设置为 remote_apply时,提交将等待,直到来自当前同步备用数据库的回复表明他们已经收到事务的提交记录并应用它,以便它对备用数据库上的查询可见
同步提交
http://www.postgresql.org/docs/9.6/static/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT
当备用数据库最初收到日志记录时,它们被写入备用数据库的 pg_xlog 目录。所以这些记录是为了妥善保管,但尚未应用于 shared_buffers 和数据文件(以及 pg_clog 等)。在应用它们之前,连接到备用数据库的任何人都看不到这些记录的效果。
这有点像从邮局收到一张纸条说“您的信封已送达”
synchronous_commit=on
(出,您的账户已记入收益,已清算,现在可以提款了”(synchronous_commit=remote_apply
)。