本节简单介绍了PostgreSQL中的synchronous_commit参数,先前有一些细节的地方没有注意。
synchronous_commit参数可选项包括on、off、local、remote_write和remote_apply,在流复制的环境下对性能的影响由小到大分别是:
off (async) > on (async) > remote_write (sync) > on|local (sync) > remote_apply (sync)
off
这个选项意味着异步操作,可能会导致数据丢失,但不会导致数据不一致的问题。
on
该选项确保已刷新到WAL,可以保证事务的持久性。
remote_write
该选项确保WAL已写入远程主机的OS,如OS崩溃则数据会丢失。
local
该选项可确保(主)节点的日志已刷新到WAL(落盘),保证事务的持久性。
remote_apply
该选项确保已写入从机的WAL并且已应用,查询结果与主节点保持一致。
参考资料
The “synchronous_commit” parameter and streaming replication
Evolution of Fault Tolerance in PostgreSQL: Synchronous Commit