Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


严格提交(STRICT_COMMIT)

📄字数 887
👁️阅读量 加载中...

引入版本

v11.0.0

功能描述

STRICT_COMMIT 用于设置客户端会话上非只读事务是否严格提交。

参数属性

属性属性值
参数类型BOOLEAN
默认值FALSE
取值范围TRUE,FALSE
影响范围会话级
修改方式在线修改,立即生效

使用场景说明

  1. STRICT_COMMIT 作用及影响。
STRICT_COMMIT作用及影响
TRUE严格提交
FALSE非严格提交

严格提交

服务端对事务提交命令,在登记事务提交日志后,挂起并等待,直到事务的Redo日志被写盘成功后,该事务提交动作才能返回给用户端。

优点

  • 即使随后发生数据库宕机,重启后也能根据Redo日志正确的修复该事务,不会出现不一致的情况。
  • 在非短小事务情况下,总体吞吐变化不明显。

缺点

  • 在事务提交时,引入了等待确认环节,单笔事务会变慢。
  • 若系统中存在大量的短小事务时,会明显的感到TPS的下降。

非严格提交

服务端对事务提交命令,在登记事务提交日志后,立刻返回给客户端提交成功。

可能触发的异常情况:

客户端发起提交事务,且收到了数据库服务端的返回信息,客户侧会认为事务正常完成。若数据库因故障导致宕机,重启后数据库端走异常宕机的修复流程,由于该事务的日志信息可能未落盘,则修复时丢失对该事务的重做操作,造成已完成事务的重做动作丢失,出现数据库侧与用户侧不一致的情况。

注意

  1. 交易类场景该参数应严格配置为 TRUE,其他场景可配置为 FALSE。
  2. 该参数在驱动程序未指定的情况下,由系统全局参数 strictly_commit 决定;

示例

  • 查询当前严格提交状态
sql
SQL> SHOW STRICT_COMMIT;

+---------------+
| STRICT_COMMIT |
+---------------+
| F             |
+---------------+
  • 设置当前会话上非只读事务为严格提交模式
sql
SQL> SET STRICT_COMMIT ON;

Execute successful.
Use time:0 ms.

-- 或
SQL> SET STRICT_COMMIT TO TRUE;

Execute successful.
Use time:0 ms.

-- 或
SQL> SET STRICT_COMMIT TO ON;

Execute successful.
Use time:0 ms.