Skip to content

适用虚谷数据库版本

v12.10.8



适用虚谷数据库版本

v12.10.8


是否将唯一值检测延迟到事务结束时进行(delay_check_unique)

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

引入版本

v11.0.0

功能描述

是否将唯一值检测延迟到事务结束时进行。

参数属性

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

使用场景说明

  1. 该参数控制系统是否延迟 UPDATE 场景中的唯一值约束检测。
delay_check_unique作用及影响
TRUE唯一值检测统一延迟在事务提交阶段进行处理。
FALSE唯一值检测发生在数据更新前。
  1. delay_check_unique 与 check_unique_mode 共同控制系统进行唯一值检测的行为,它们的控制矩阵图如下:
-check_unique_mode = 1check_unique_mode = 2
delay_check_unique = trueUPDATE 场景延迟检测,INSERT 场景不进行预检测。UPDATE 场景延迟检测,INSERT 场景进行预检测。
delay_check_unique = falseINSERT 和 UPDATE 场景不进行预检测。INSERT 和 UPDATE 场景均进行预检测。

提示

  1. 关闭唯一值延迟检测(delay_check_unique = false)能减少不必要的冗余操作,对业务性能提升有帮助。

示例

sql
-- 在线修改 delay_check_unique
SQL> SET delay_check_unique TO false;

-- 在线查看 delay_check_unique
SQL> SHOW delay_check_unique;

/*
 * 场景一:
 *   1. delay_check_unique = false;
 *   2. check_unique_mode = 2;
 *   3. auto_commit = true;
 */
 SQL> CREATE TABLE t1(c1 INTEGER);
 SQL> CREATE UNIQUE INDEX idx ON t1(c1);
 SQL> INSERT INTO t1 VALUES(1)(2);
 SQL> UPDATE t1 SET c1 = 1 WHERE c1 = 2; -- 存储内的数据在更新前进行唯一值检测,并报 E13001 违反唯一值约束;

 /*
 * 场景二:
 *   1. delay_check_unique = true;
 *   2. check_unique_mode = 2;
 *   3. auto_commit = true;
 */
 SQL> CREATE TABLE t1(c1 INTEGER);
 SQL> CREATE UNIQUE INDEX idx ON t1(c1);
 SQL> INSERT INTO t1 VALUES(1)(2);
 SQL> UPDATE t1 SET c1 = 1 WHERE c1 = 2; -- 存储内的数据在更新时被动报 E13001 违反唯一值约束;