暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓KingbaseES数据库-synchronous_commit参数

数据猿 2023-01-30
911
synchronous_commit

属性

描述

类型

enum

默认值

on

级别

USER---用户级

指定在命令返回“success”指示给客户端之前,一个事务是否需要等待 WAL 记录被写入磁盘。合法的值是 on 、 remote_apply 、 remote_write 、 local 和 off 。默认的并且安全的设置是 on 。当设置为 off 时,在向客户端报告成功和真正保证事务不会被服务器崩溃威胁之间会有延迟(最大的延迟是 wal_writer_delay 的三倍)。不同于 fsync ,将这个参数设置为 off 不会产生数据库不一致性的风险:一个操作系统或数据库崩溃可能会造成一些最近据说已提交的事务丢失,但数据库状态是一致的,就像这些事务已经被干净地中止。因此,当性能比完全确保事务的持久性更重要时,关闭 synchronous_commit 可以作为一个有效的代替手段。

如果 synchronous_standby_names 为非空,这个参数也控制事务提交是否将等待它们的 WAL 记录被复制到后备服务器上。当这个参数被设置为 on 时,直到来自于当前同步的后备服务器的回复指示它们已经收到了事务的提交记录并将其刷入了磁盘,主服务器上的事务才会提交。这保证事务将不会被丢失,除非主服务器和所有同步后备都遭受到了数据库存储损坏的问题。当被设置为 remote_apply 时,提交将会等待,直到来自当前的同步后备的回复指示它们已经收到了该事务的提交记录并且已经应用了该事务,这样该事务才变得对后备上的查询可见。当这个参数被设置为 remote_write 时,提交将等待,直到来自当前的同步后备的回复指示它们已经收到了该事务的提交记录并且已经把该记录写出到它们的操作系统,这种设置足以保证数据在后备服务器的KingbaseES实例崩溃时得以保存,但是不能保证后备服务器遭受操作系统级别崩溃时数据能被保持,因为数据不一定必须要在后备机上达到稳定存储。最后,设置 local 会导致提交等待本地刷写到磁盘而不是复制完成。在使用同步复制时这通常不是我们想要的效果,但是为了完整性,还是提供了这样一个选项。

如果 synchronous_standby_names 为空,设置 on 、 remote_apply 、 remote_write 和 local 都提供了同样的同步级别:事务提交只等待本地刷写磁盘。

这个参数可以随时被修改;任何一个事务的行为由其提交时生效的设置决定。因此,可以同步提交一些事务,同时异步提交其他事务。例如,当默认是相反时,实现一个单一多语句事务的异步提交,在事务中发出 SET LOCAL synchronous_commit TO OFF 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论