过程函数中SQL重用多少次后重解析规划(proc_reuse_cnt)
📄字数 599
👁️阅读量 加载中...
引入版本
v11.0.0
功能描述
存储过程或函数中的 SQL 在执行多少次后需要强制重新解析并规划执行计划。
参数属性
属性 | 属性值 |
---|---|
参数类型 | INTEGER |
默认值 | 1 |
取值范围 | [0, 10000] |
影响范围 | 系统级 |
修改方式 | 在线修改,立即生效 |
使用场景说明
- 存储过程或函数在编译过程中将静态 SQL 解析规划生成执行节点,编译后的 SQL 执行计划将固定保持不变,对相关依赖表的数据变化无感知,这会导致 SQL 执行计划可能不是最优。proc_reuse_cnt 则用于控制静态 SQL 在重用一定次数之后重新编译,以达到修正 SQL 执行计划的目的。
- proc_reuse_cnt 控制过程(函数)中 SQL 的执行行为。
proc_reuse_cnt | 作用及影响 |
---|---|
0 | 每次执行存储过程或函数中的静态 SQL 时,都重用已有的执行计划 |
1 | 每次执行存储过程或函数中的静态 SQL 时,都重新解析 SQL 并生成新的执行计划 |
100 | 每执行存储过程或函数中的静态 SQL 满 100 次时,都重新解析 SQL 并生成新的执行计划 |
示例
- 在线修改 proc_reuse_cnt
sql
SQL> set proc_reuse_cnt to 1;
Execute successful.
Use time:3 ms.
- 在线查看 proc_reuse_cnt
sql
SQL> show proc_reuse_cnt;
+----------------+
| PROC_REUSE_CNT |
+----------------+
| 1 |
+----------------+
(1 row)
Use time:0 ms.