synchronous_commit这个参数为on和remote_write时,分别是怎么处理的?
on:数据写到磁盘之后,返回成功。
问题1:在单机的情况下,如果磁盘做了缓存,是写到磁盘缓存还是必须落盘?
问题2:在主备流复制的情况下,wal日志是否需要应用到备库(是直接应用还是先落盘再应用?),才能返回成功?
问题1:
on ,表示事务结束时,对应的XLOG必须落盘才返回客户端事务结束状态。
如果配置了synchronous_standby_names,需要等配置中的第一个standby接收到对应的XLOG并落盘。才返回客户端事务结束状态。
问题2:
remote_write,针对配置了synchronous_standby_names,需要等配置中的第一个standby接收到对应的XLOG并已写入wal buffer。才返回客户端事务结束状态。
问题2补充,目前无法实现主备实时同步查询,因为不会等待STANDBY的xlog replay,也就是说standby xlog落盘后apply的时间差。算是半同步。另外standby如果有查询的话xlog apply也有遭遇冲突的可能,例如正查询的数据和一笔vacuum操作的xlog有可能冲突。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。