更新时间:2025-09-25 GMT+08:00
分享

创建SQL限流任务(v3.1)

功能介绍

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

调试

您可以在API Explorer中调试该接口。

接口约束

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

URI

POST /v3.1/{project_id}/instances/{instance_id}/limit-task

表1 参数说明

名称

是否必选

参数类型

说明

project_id

String

参数解释:

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

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

约束限制:

不涉及。

取值范围:

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

默认取值

不涉及。

instance_id

String

参数解释:

实例ID,此参数是用户创建实例的唯一标识。

约束限制:

不涉及。

取值范围:

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

默认取值

不涉及。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

参数解释:

用户Token。

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

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

约束限制:

不涉及。

取值范围:

不涉及。

默认取值

不涉及。

X-Language

String

参数解释:

语言。

约束限制:

不涉及。

取值范围:

  • zh-cn
  • en-us

默认取值

en-us

表3 请求Body参数

参数

是否必选

参数类型

描述

task_scope

String

参数解释

限流任务范围,目前支持SQL、SESSION级别范围。

约束限制

不涉及。

取值范围

  • SQL
  • SESSION

默认取值

不涉及。

start_time

String

参数解释

任务开始时间,如果该值小于当前时间,会取当前时间的前两分钟。

约束限制

“task_scope”为SQL时必传。

取值范围

格式必须为yyyy-mm-ddThh:mm:ssZ,当前时间指UTC时间。

默认取值

不涉及

end_time

String

参数解释

任务结束时间。

约束限制

“task_scope”为SQL时必传。

取值范围

大于任务开始时间,格式必须为yyyy-mm-ddThh:mm:ssZ,当前时间指UTC时间。

默认取值

不涉及。

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个字符。

默认取值

不涉及。

parallel_size

Integer

参数解释

并发数。

约束限制

不涉及。

取值范围

大于等于零的整数,取值范围[0, 2147483647]。

默认取值

不涉及。

cpu_utilization

Integer

参数解释

CPU利用率阈值。

约束限制

如果“limit_type”为SESSION_ACTIVE_MAX_COUNT,必传。不支持和内存利用率阈值同时为0,如果选择只限制CPU、内存中的其中一个,则另一个必须传值0。

取值范围

整数,取值范围[0,100)。

默认取值

不涉及。

memory_utilization

Integer

参数解释

内存利用率阈值。

约束限制

如果“limit_type”为SESSION_ACTIVE_MAX_COUNT,必传。不支持和CPU利用率阈值同时为0,如果选择只限制CPU、内存中的其中一个,则另一个必须传值0。

取值范围

整数,取值范围[0,100)。

默认取值

不涉及。

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。

约束限制

必须是当前实例的某一个节点ID。

取值范围

不涉及。

默认取值

不涉及。

sql_id

String

参数解释

该节点执行的SQL语句ID。

约束限制

如果“limit_type”为SQL_ID,必须与“limit_type_value”值一致。

取值范围

不涉及。

默认取值

不涉及。

响应参数

表5 响应Body参数

参数

参数类型

描述

job_id

String

参数解释

工作流ID。

取值范围

不涉及。

请求示例

  • 创建限流范围是SQL级别,限流类型是SQL_ID的限流任务。
    POST https://gaussdb-opengauss.cn-north-1.myhuaweicloud.com/v3.1/0611f1bd8b00d5d32f17c017f15b599f/instances/3d39c18788b54a919bab633874c159dfin14/limit-task
    {
        "limit_type": "SQL_ID",
        "task_name": "t_limit",
        "limit_type_value": "2983157089",
        "task_scope": "SQL",
        "sql_model": "select * from t_limit;",
        "parallel_size": 2,
        "start_time": "2025-09-18T03:16:17+0000",
        "end_time": "2025-09-18T04:16:22+0000",
        "node_infos": [
            {
                "node_id": "a2a8c1f02782475ea3ac73e34ffe5dd8no14",
                "sql_ids": [
                    "2983157089"
                ]
            }
        ],
        "databases": "t_limit"
    }
  • 创建限流范围是SQL级别,限流类型是SQL_TYPE的限流任务。
    POST https://gaussdb-opengauss.cn-north-1.myhuaweicloud.com/v3.1/0611f1bd8b00d5d32f17c017f15b599f/instances/3d39c18788b54a919bab633874c159dfin14/limit-task
    {
    	"limit_type": "SQL_TYPE",
    	"task_name": "t_limit_key_word",
    	"limit_type_value": "select",
    	"task_scope": "SQL",
    	"parallel_size": 2,
    	"start_time": "2025-09-18T08:49:07+0000",
    	"end_time": "2025-09-18T08:55:13+0000",
    	"node_infos": [
    		{
    			"node_id": "dc96ae0de3b04d7a8679406c3a21fa90no14"
    		}
    	],
    	"key_words": "abc,def",
    	"databases": "db_ecs_fe1,db_liujian,t_limit"
    }
  • 创建限流范围是SESSION级别,限流类型是SESSION_ACTIVE_MAX_COUNT的限流任务。
    POST https://gaussdb-opengauss.cn-north-1.myhuaweicloud.com/v3.1/0611f1bd8b00d5d32f17c017f15b599f/instances/3d39c18788b54a919bab633874c159dfin14/limit-task
    {
    	"parallel_size": 0,
    	"task_name": "t_limit_resource",
    	"cpu_utilization": 10,
    	"memory_utilization": 33,
    	"limit_type": "SESSION_ACTIVE_MAX_COUNT",
    	"limit_type_value": "CPU_OR_MEMORY",
    	"task_scope": "SESSION"
    }

响应示例

{ 
  "job_id" : "d8819ac11297598d06e591b5786aab86" 
}

状态码

错误码

请参见错误码

相关文档