创建SQL限流任务
接口约束
- 分布式实例不支持SQLID类型和自治限流任务。
- 不支持对系统级别用户(例如root等)进行SQL限流。
- 每个实例最多支持1000条限流任务。
- 对于关键词限流任务,一个关键词中包含英文逗号视作以逗号分割的两个关键词,作用时不区分关键词前后顺序。
- 限流功能仅支持8.0及以上版本实例。
URI
POST https://{Endpoint}/v3/{project_id}/instances/{instance_id}/limit-task
名称 |
是否必选 |
说明 |
---|---|---|
project_id |
是 |
参数解释: 租户在某一Region下的项目ID。 获取方法请参见获取项目ID。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字组成,且长度为32个字符。 默认取值: 不涉及。 |
instance_id |
是 |
实例ID。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
用户Token。 通过调用IAM服务获取用户Token接口获取。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。 |
X-Language |
否 |
String |
语言。 缺省值:en-us 枚举值:
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
task_scope |
是 |
String |
限流任务范围,目前支持SQL,SESSION两种级别范围。 |
start_time |
否 |
String |
任务开始时间,当“task_scope”为SQL时必传。 取值范围:大于等于当前时间(UTC时间)的前两分钟。 格式必须为yyyy-mm-ddThh:mm:ss+0000。 |
end_time |
否 |
String |
任务结束时间,当“task_scope”为SQL时必传。 取值范围:大于任务开始时间。 格式必须为yyyy-mm-ddThh:mm:ss+0000。 |
limit_type |
是 |
String |
限流类型。
|
limit_type_value |
是 |
String |
限流类型值。
|
key_words |
否 |
String |
关键词,当“limit_type”为SQL_TYPE时,必传。 多个关键词以逗号隔开,数量范围为[2,100]个,每个关键词长度范围[2,64]位,关键词不允许包含 " 或 \ 或 {} 或 null值以及非首尾的空格符。 |
task_name |
是 |
String |
限流任务名称,只能为英文字母大小写,下划线,数字和$符,最大长度为100个字符。 |
sql_model |
否 |
String |
SQL模板。如果“limit_type”为SQLID,必传。 |
parallel_size |
是 |
Integer |
并发数,大于等于零的正整数,取值范围[0, 2147483647]。 |
cpu_utilization |
否 |
Integer |
CPU利用率阈值,整数,取值范围[0,100)。 如果“limit_type”为SESSION_ACTIVE_MAX_COUNT,则“cpu_utilization”必选。 不支持和内存利用率阈值同时为0,如果选择只限制CPU、内存中的其中一个,则另一个必须传值0。 |
memory_utilization |
否 |
Integer |
内存利用率阈值,整数,取值范围[0,100)。 如果“limit_type”为SESSION_ACTIVE_MAX_COUNT,则“memory_utilization”必选。 不支持和CPU利用率阈值同时为0,如果选择只限制CPU、内存中的其中一个,则另一个必须传值0。 |
databases |
否 |
String |
实例的数据库列表,每个数据库以英文逗号形式隔。 如果“limit_type”为SQL_TYPE,则“databases”必选。 |
node_infos |
否 |
Array of objects |
CN节点信息列表,详情参见表表4。 如果“limit_type”为SQL_ID,则“node_infos”必选。 |
响应参数
参数 |
参数类型 |
描述 |
---|---|---|
task_id |
String |
限流任务ID。 |
task_scope |
String |
任务限流范围。 |
limit_type |
String |
任务限流类型。 |
limit_type_value |
String |
任务限流类型值。 |
databases |
String |
实例的数据库列表,每个数据库以英文逗号形式隔开。 |
task_name |
String |
限流任务名。 |
sql_model |
String |
SQL模板,仅当任务类型为SQL_ID时,返回该值。 |
key_words |
String |
关键词,仅当任务类型为SQL_TYPE时,返回该值。 |
status |
String |
限流任务状态,当前支持:CREATING,UPDATING,DELETING,WAIT_EXECUTE,EXCUTING,TIME_OVER,DELETED,CREATE_FAILED,UPDATE_FAILED,DELETE_FAILED,EXCEPTION,NODE_SHUT_DOWN。 |
instance_id |
String |
实例ID。 |
rule_name |
String |
规则名。 |
parallel_size |
Integer |
并发数。 |
cpu_utilization |
Integer |
CPU利用率阈值,仅当任务类型为SESSION_ACTIVE_MAX_COUNT时,返回该值且只保留整数部分。 |
memory_utilization |
Integer |
内存利用率阈值,仅当任务类型为SESSION_ACTIVE_MAX_COUNT时,返回该值且只保留整数部分。 |
start_time |
String |
限流任务开始时间,格式为yyyy-mm-ddThh:mm:ssZ。当“task_scope”为SQL时会返回该参数。 |
end_time |
String |
限流任务结束时间,格式为yyyy-mm-ddThh:mm:ssZ。当“task_scope”为SQL时会返回该参数。 |
created |
String |
创建时间,格式为yyyy-mm-ddThh:mm:ss+0000。 |
updated |
String |
更新时间,格式为yyyy-mm-ddThh:mm:ss+0000。 |
creator |
String |
创建者。 |
modifier |
String |
更新者。 |
node_infos |
Array of 表6 objects |
CN节点信息列表,如果类型为SQLID,返回该值且与请求参数相同。 |
job_id |
String |
工作流ID。 |
请求示例
- 创建限流范围是SQL级别,限流类型是SQL_ID的限流任务。
https://gaussdb-opengauss.ap-southeast-1.myhuaweicloud.com/v3/0611f1bd8b00d5d32f17c017f15b599f/instances/3d39c18788b54a919bab633874c159dfin14/limit-task { "task_scope" : "SQL", "start_time" : "2023-06-06T01:47:20+0800", "end_time" : "2023-06-07T01:47:20+0800", "limit_type" : "SQL_ID", "limit_type_value" : "39b6a1a", "task_name" : "test1", "sql_model" : "select * from a where b = ?", "parallel_size" : 100, "node_infos" : [ { "node_id" : "46d996fdda594f58b17fe509061e0893no14", "sql_id" : "39b6a1a" } ] }
- 创建限流范围是SQL级别,限流类型是SQL_TYPE的限流任务。
https://gaussdb-opengauss.ap-southeast-1.myhuaweicloud.com/v3/0611f1bd8b00d5d32f17c017f15b599f/instances/3d39c18788b54a919bab633874c159dfin14/limit-task { "task_scope" : "SQL", "start_time" : "2023-06-06T01:47:20+0800", "end_time" : "2023-06-07T01:47:20+0800", "limit_type" : "SQL_TYPE", "limit_type_value" : "select", "task_name" : "test1", "key_words" : "table1,id", "parallel_size" : 100, "databases" : "test1" }
- 创建限流范围是SESSION级别,限流类型是SESSION_ACTIVE_MAX_COUNT的限流任务。
https://gaussdb-opengauss.ap-southeast-1.myhuaweicloud.com/v3/0611f1bd8b00d5d32f17c017f15b599f/instances/3d39c18788b54a919bab633874c159dfin14/limit-task { "task_name" : "test", "task_scope" : "SESSION", "limit_type" : "SESSION_ACTIVE_MAX_COUNT", "limit_type_value" : "CPU_OR_MEMORY", "cpu_utilization" : 80, "memory_utilization" : 80, "parallel_size" : 100 }
响应示例
{ "task_id" : "59b6a1a278844ac48119d86512e0000", "task_scope" : "SQL", "task_name" : "test1", "limit_type" : "SQL_TYPE", "limit_type_value" : "select", "instance_id" : "cb651ac71c5a447685ef981e44a0422fin14", "key_words" : "test", "databases" : "test1", "status" : "creating", "parallel_size" : 100, "rule_name" : "dsa48119d86512e0000bin066a1a27", "start_time" : "2023-12-30T02:00:00Z", "end_time" : "2023-12-30T02:00:00Z", "created" : "2023-12-30T02:00:00Z", "updated" : "2023-12-30T02:00:00Z", "creator" : "dbs_rds_guangzhou_l00417929_01", "job_id" : "d8819ac11297598d06e591b5786aab86" }
状态码
- 正常
- 异常
请参见状态码。
错误码
请参见错误码。