描述
该语句仅支持使用 SQL_TEXT 创建的 OUTLINE,可用于添加绑定 OUTLINE 和限流规则。
格式
ALTER OUTLINE outline_name ADD stmt [ TO target_stmt ]
参数解释
参数 | 描述 |
---|---|
outline_name | 指定要创建的 OUTLINE 名称。 |
stmt | 一般为一个带有 hint 和原始参数的 DML 语句。 |
TO target_stmt | 如果不指定 TO target_stmt, 则表示如果数据库接受的SQL参数化后与stmt去掉hint参数化文本相同,则将该SQL绑定stmt中hint生成执行计划;如果期望对含有hint的语句进行固定计划,则需要 TO target_stmt 来指明原始的SQL。 注意 在使用target_stmt时,严格要求stmt与target_stmt在去掉hint后完全匹配。 |
示例
- 通过 ALTER OUTLINE 来添加限流规则。
OceanBase (root@oceanbase)> alter outline ol_1 add select /*+max_concurrent(1)*/ * from t1 where c1 = 1 and c2 = ?;
OceanBase (root@oceanbase)> alter outline ol_1 add select /*+max_concurrent(1)*/ * from t1 where c1 = ? and c2 = 1;
- 通过 ALTER OUTLINE 来添加执行计划。
OceanBase (root@oceanbase)> create outline ol_2 on select /*+max_concurrent(1)*/ * from t1,t2 where t1.c1 = 1;
OceanBase (root@oceanbase)> alter outline ol_2 add select /*+use_nl(t2)*/ * from t1,t2 where t1.c1 = 1;
注意事项
同一个 outline_name 只能指定一个执行计划。如果通过 create outline 语句指定了执行计划,则无法通过执行 alter outline 时再添加。
同 create outline 类似,在 alter outline 时不能同时指定限流规则和执行计划。
执行 alter outline 时,需要 outline_name 和 signature 同时匹配。