跳到主要内容

THROTTLE

描述

该语句用来设置 SQL 特征限流。让符合设置限流特征的 SQL 请求提早失败,避免它对正常请求造成影响。

语法

alter_system_throttle_stmt:
ALTER SYSTEM throttle_action;

throttle_action:
ENABLE SQL THROTTLE [priority_option] [using_metric_option_list]
| DISABLE SQL

priority_option:
FOR PRIORITY <= INT_VALUE

using_metric_option_list:
USING metric_option_list

metric_option_list:
metric_option [metric_option ...]

metric_option:
RT = {INT_VALUE | DECIMAL_VALUE}
| CPU = {INT_VALUE | DECIMAL_VALUE}
| IO = INT_VALUE
| NETWORK = {INT_VALUE | DECIMAL_VALUE}
| QUEUE_TIME = {INT_VALUE | DECIMAL_VALUE}
| LOGICAL_READS = {INT_VALUE | DECIMAL_VALUE}

参数解释

参数描述
ENABLE SQL开启限流,后接限流特征及特征值。
FOR PRIORITY设定受到限流影响的优先级,目的是限流影响只在部分 Session 生效。您可以通过会话级变量 sql_throttle_priority 设置当前会话的优先级,默认为 -1。例如 Session abc 优先级分别为 123,设置 ALTER SYSTEM ENABLE SQL THROTTLE FOR PRIORITY <= 2 USING QUEUE_TIME=0.1; 表示 Session ab 受限流影响,而 c 不受限流影响。
RT按 SQL 响应时间(Response Time)限流。单位为秒。
CPU按 CPU 占用限流。
当前版本暂不支持该参数。
IO按 IO 次数限流。
当前版本暂不支持该参数。
NETWORK按传输的网络流量大小限流。
当前版本暂不支持该参数。
QUEUE_TIME按队列等待时间限流。单位为秒。
LOGICAL_READS按逻辑读次数限流。
当前版本暂不支持该参数。
DISABLE SQL关闭限流。

示例

PRIORITY 小于等于 100 的 Session 上队列等待时间超过 0.1s 的请求限流。

ALTER SYSTEM ENABLE SQL THROTTLE FOR PRIORITY <= 100 USING QUEUE_TIME=0.1;