1. PostgreSQL synchronous_commit 的级别,off、local、on、remote_write、remote_apply?
PostgreSQL synchronous_commit 有哪些级别?off、local、on、remote_write、remote_apply 分别代表什么?
- synchronous_commit 各级别含义
- 同步提交与数据持久化程度
- 与复制同步性的关系
PostgreSQL 的 synchronous_commit 参数控制事务提交时对持久化的等待程度,级别从低到高:off——不等待本地 WAL 刷盘就返回,最快但可能丢最近事务;local——等待本地 WAL 刷盘,但不等待从库,RPO 依赖本地;remote_write——等待从库收到 WAL 写入但未刷盘,比 local 多一层同步;on(默认)——等待从库收到并刷盘 WAL,保证事务已同步到至少一个从库的磁盘;remote_apply——等待从库不仅收到刷盘,还已经回放(应用)了该事务,从库查询可见,最严格。级别越高,主库提交延迟越高,但数据同步性越强。
synchronous_commit 级别在"主库性能"与"数据同步程度"之间权衡。off 牺牲数据安全换性能(适合临时表),remote_apply 最严格但延迟最大。它需配合 synchronous_standby_names 指定的同步从库生效。理解级别差异有助于按业务选择合适的一致性等级。