codecamp

OceanBase ALTER OUTLINE

描述

该语句仅支持使用 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 来添加限流规则。
obclient>CREATE OUTLINE ol_1 ON SELECT /*+max_concurrent(1)*/ * FROM t1 WHERE c1 =1 
           AND c2 = 1;
obclient>ALTER OUTLINE ol_1 ADD SELECT /*+max_concurrent(1)*/ * FROM t1 WHERE c1 =1 
           AND c2 = ?;
obclient>ALTER OUTLINE ol_1 ADD SELECT /*+max_concurrent(1)*/ * FROM t1 WHERE c1 =? 
           AND c2 = 1;
  • 通过 ALTER OUTLINE 来添加执行计划。
obclient>CREATE OUTLINE ol_2 ON SELECT /*+max_concurrent(1)*/ * FROM t1,t2 
          WHERE t1.c1 = 1;
obclient>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​ 同时匹配。


OceanBase ALTER KEYSTORE
OceanBase ALTER SEQUENCE
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OceanBase 控制台指南

OceanBase ODC 使用指南

OceanBase Web 版 ODC

OceanBase 客户端版 ODC

OceanBase Connector/J 开发者指南

OceanBase 什么是OceanBase Connector/J

OceanBase SQL 参考(MySQL 模式)

OceanBase SQL 参考(Oracle 模式)

OceanBase 基本元素

OceanBase 数据库对象

OceanBase 函数

OceanBase 单行函数

OceanBase 返回数字的字符串函数

OceanBase 通用比较函数

OceanBase 编码解码函数

OceanBase SQL 调优指南

OceanBase 相关协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }