更新时间:2024-11-15 GMT+08:00

创建SQL限流任务

功能介绍

根据具体范围和类型,进行限流任务的创建。

接口约束

  • 分布式实例不支持SQLID类型和自治限流任务。
  • 不支持对系统级别用户(例如root等)进行SQL限流。
  • 每个实例最多支持1000条限流任务。
  • 对于关键词限流任务,一个关键词中包含英文逗号视作以逗号分割的两个关键词,作用时不区分关键词前后顺序。
  • 限流功能仅支持8.0及以上版本实例。

URI

POST https://{Endpoint}/v3/{project_id}/instances/{instance_id}/limit-task

表1 参数说明

名称

是否必选

说明

project_id

参数解释:

租户在某一Region下的项目ID。

获取方法请参见获取项目ID

约束限制:

不涉及。

取值范围:

只能由英文字母、数字组成,且长度为32个字符。

默认取值

不涉及。

instance_id

实例ID。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。

通过调用IAM服务获取用户Token接口获取。

请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。

X-Language

String

语言。

缺省值:en-us

枚举值:

  • zh-cn
  • en-us
表3 请求Body参数

参数

是否必选

参数类型

描述

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

限流类型。

  • “task_scope”为SQL时,可选SQL_ID、SQL_TYPE类型。
  • “task_scope”为SESSION时,可选SESSION_ACTIVE_MAX_COUNT类型。

limit_type_value

String

限流类型值。

  • “limit_type”为SQL_ID类型时,该值为选中模板的sql_id。
  • “limit_type”为SQL_TYPE类型时,值为SQL类型,目前支持select,update,insert,delete,merge。
  • “limit_type”为SESSION_ACTIVE_MAX_COUNT类型时,只支持CPU_OR_MEMORY一种值。

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”必选。

表4 CreateLimitTaskNodeOption

参数

是否必选

参数类型

描述

node_id

String

节点ID。

sql_id

String

该节点执行的SQL语句ID,如果“limit_type”为SQL_ID,必须与“limit_type_value”值一致。

响应参数

表5 响应Body参数

参数

参数类型

描述

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。

表6 CreateLimitTaskNodeResult

参数

参数类型

描述

node_id

String

节点ID。

sql_id

String

该节点执行的SQL语句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"
}

状态码

错误码

请参见错误码