查询熔断
1、SQL Block Rule
全局级别阻止规则
CREATE SQL_BLOCK_RULE rule_001
PROPERTIES (
“sql”=“select \* from t”, #正则匹配规则
“cardinality” = “1000”, #扫描超过指定行数
“partition_num” = “30”, #扫描超过指定分区数
“tablet_num” = “200”, #扫描超过指定分桶数
“sql”=“(?i)abs\s*\(.+\)”, #特定模式的查询
“global” = “true”, #是否全局
“enable” = “true”
)
用户级别阻止规则
CREATE SQL_BLOCK_RULE rule_002
PROPERTIES (
“sql”=“select * from t”,
“global” = “false”,
“enable” = “true”
)
set property for ‘root’ ‘SQL_block_rules’ = ‘rule_001,rule_002’;
2、Workload Policy
资源策略管理
create workload Policy test_cancel_Policy
Conditions(query_time > 1000, be_scan_rows > 100000)
Actions(cancel_query)
properties(‘enabled’=‘true’);
Condition-表示策略触发条件
username:查询携带的用户名,只会在FE触发set_session_variable Action
be_scan_rows:一个SQL在单个BE进程内scan的行数,如果这个SQL在BE上是多并发执行,那么就是多个并发的累加值。
be_scan_bytes:一个SQL在单个BE进程内scan的字节数,如果这个SQL在BE上是多并发执行,那么就是多个并发的累加值,单位是字节。
query_time:一个SQL在单个BE进程上的运行时间,时间单位是毫秒。
query_be_memory_bytes:一个SQL在单个BE进程内使用的内存用量,如果这个SQL在BE上是多并发执行,那么就是多个并发的累加值,单位是字节。
Action-表示条件触发时采取的动作
cancel_query:取消查询。
set_session_variable:触发set session variable语句。同一个policy可以有多个set_session_variable选项,目前只会在FE由username Condition触发。