Skip to content

适用虚谷数据库版本

v12.10.8



适用虚谷数据库版本

v12.10.8


启用预处理重用(prepare_reuse)

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

引入版本

v11.0.0

功能描述

是否开启 prepare 重用。

参数属性

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

使用场景说明

  1. 该参数控制系统执行 DML 预处理语句的行为。
prepare_reuse作用描述
TRUE执行 prepare 预处理语句时,系统尽量重用旧的执行计划,除非相关表结构发生变化。
FALSE执行 prepare 预处理语句时,重新进行路径规划。

注意

  1. 使用 prepare 定义预处理语句时,连接会话上会持有事务级对象锁(IX锁),事务提交后才可对相关对象进行 DDL 操作。
  2. prepare_reuse = true 时,若在定义 DML 预处理语句之后对相关表对象进行过修改,则用户在下次执行该预处理语句时仍然会重新规划执行计划。

示例

sql
-- 在线修改 prepare_reuse
SQL> SET prepare_reuse TO true;

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

/*
 * 场景一:
 *   1. prepare_reuse = true;
 *   2. auto_commit = true;
 */
SQL> PREPARE st0 as SELECT * FROM t1 WHERE c1=1;
SQL> ?st0; -- 使用旧的执行计划;
SQL> ALTER TABLE t1 MODIFY COLUMN c1 BIGINT; -- 修改表结构
SQL> ?st0; -- 重新规划执行计划;

/*
 * 场景二:
 *   1. prepare_reuse = false;
 *   2. auto_commit = true;
 */
SQL> PREPARE st0 as SELECT * FROM t1 WHERE c1=1;
SQL> ?st0; -- 重新规划执行计划;