当前位置: 首页 > article >正文

PostgreSQL synchronous_commit 参数

一、单实例

单实例下因为没有远程节点,所以只有三个值可以设(on、off、local),并且此时设为on和local基本是一个意思,相当于只有on、off两种值,下面分别来看。

1、synchronous_commit=on / local

单实例下设置成 on或local 均表示提交事务时需等待相应WAL数据写入本地WAL日志文件后才向客户端返回成功。设置成on非常安全,但数据库性能有损耗 。

2、synchronous_commit=off

与上面相反,设置成off表示提交事务时不需等待相应WAL数据写入本地WAL日志文件即可向客户端返回成功。当数据库宕机时最新提交的少量事务可能丢失,但数据库重启后会认为这些事务异常中止。设置成off能够提升数据库性能,因此对于数据准确性没有精确要求同时追求数据库性能的场景建议设置成off。

二、主从复制

1、synchronous_commit=off

含义同上,表示提交事务时不需等待本地相应WAL数据写入本地WAL日志文件即可向客户端返回成功。

2、synchronous_commit=local

含义同上,表示提交事务时需等待相应WAL数据写入本地WAL日志文件后才向客户端返回成功。

3、synchronous_commit=remote_write

当流复制主库提交事务时,需等待备库接收主库发送的WAL日志流并写入备节点操作系统缓存中,才向客户端返回成功。

简单地说 remote write 表示本地WAL已落盘,备库的WAL还在备库操作系统缓存中,也就是只有一份持久化的WAL。这个选项带来的事务响应时间较低,但安全性也相对较低——这种情况下备库实例出现异常关闭时己传送的WAL日志不会有丢失风险,但备库操作系统异常宕机就有已传送的WAL丢失风险了,因为此时WAL可能还没完全写人备节点WAL文件中。

4、synchronous_commit=on

on跟单实例下含义不同,表示流复制主库提交事务时,需等待备库接收主库发送的WAL日志流并写入WAL文件,之后才向客户端返回成功。

简单地说 on 表示本地和备库的WAL都已落盘,有两份持久化的WAL,但备库此时还没有完成apply,这个选项带来的事务响应时间较高 。

5、synchronous_commit=remote_apply

表示流复制主库提交事务时 ,需等待备库完成相应部分apply才向客户端返回成功。

简单地说 remote_apply 表示本地和备库的WAL都已落盘且备库完成相应部分apply,这个设置保证了拥有两份持久化的 WAL,同时备库也完成了重做,这个选项带来的事务响应时间最高 。


http://www.kler.cn/a/457995.html

相关文章:

  • 大模型训练(1):流水线并行
  • 【运维】Win跨局域网远程链接
  • 基本算法——分类
  • 数字图像处理
  • 学系C++:循环练习案例
  • 【bluedroid】A2dp Source播放流程源码分析(4)
  • Microsoft SQL Serve的下载与安装
  • Android笔试面试题AI答之非技术问题(3)
  • 区块链web3 基础知识,包括ABI、EIP、ERC等
  • 2011-2019年各省总抚养比数据
  • 【Nginx系列】---Nginx配置tcp转发
  • 一般方法求任意次方的近似值递推式
  • C++笔记之格式化字符串
  • python+panddleocr+文本识别训练导出测试
  • GSM长短信的消息头解析及短信体解析(包含UDHI指示语)
  • Redis是如何处理过期键的
  • 前缀树介绍
  • Docker应用-项目部署及DockerCompose
  • 探索数据的艺术:R语言与Origin的完美结合
  • Html——12. 定义样式和引入样式