开发者社区> 问答> 正文

求对synchronous_commit参数的理解

已解决

synchronous_commit这个参数为on和remote_write时,分别是怎么处理的?

on:数据写到磁盘之后,返回成功。
问题1:在单机的情况下,如果磁盘做了缓存,是写到磁盘缓存还是必须落盘?
问题2:在主备流复制的情况下,wal日志是否需要应用到备库(是直接应用还是先落盘再应用?),才能返回成功?

展开
收起
pis-j 2016-03-07 15:58:18 3031 0
1 条回答
写回答
取消 提交回答
  • 公益是一辈子的事, I am digoal, just do it. 阿里云数据库团队, 擅长PolarDB, PostgreSQL, DuckDB, ADB等, 长期致力于推动开源数据库技术、生态在中国的发展与开源产业人才培养. 曾荣获阿里巴巴麒麟布道师称号、2018届OSCAR开源尖峰人物.
    采纳回答

    问题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有可能冲突。

    2019-07-17 18:32:55
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载