You need to enable JavaScript to run this app.
导航
大查询防御
最近更新时间:2025.11.03 17:03:24首次发布时间:2025.11.03 16:50:56
复制全文
我的收藏
有用
有用
无用
无用

适用场景

在生产环境中,需为业务模块划分资源使用,避免大查询或业务 BUG 导致集群资源过载、影响其他业务;EMR Serverless StarRocks 的引擎提供多种资源隔离或查询熔断方式。

适用版本

产品形态

引擎

部署方式

适用版本

Serverless 实例
(全托管)

StarRocks

存算分离

3.2.x版本及以上

存算一体

3.2.x版本及以上

操作步骤

存算一体与存算分离(湖仓版)

对于大查询防御通常有如下两种方法。

需要结合业务实际情况来选择使用。以下为使用样例,详细请参考 StarRocks 资源隔离进行配置调整。

添加 SQL 黑名单

注意

  • StarRocks 的 SQL 黑名单功能默认不开启。
  • StarRocks 的 SQL 黑名单将会全用户生效。
  • Insert SQL 和 Select SQL 都可以被黑名单拦截。
  1. 开启 SQL 黑名单功能。
-- 1、查看是否开启SQL黑名单,若未开启执行下一步
admin show frontend config like '%enable_sql_blacklist%';

-- 2、动态开启SQL黑名单
admin set frontend config ('enable_sql_blacklist' = 'true');
  1. 添加黑名单,黑名单仅支持正则表达式。
-- 1、创建block规则   例如 ADD SQLBLACKLIST "select count(\\*) from .+";
ADD SQLBLACKLIST "<sql_reg_expr>";

-- 2、 查看SQL Blacklist的编号与内容
SHOW SQLBLACKLIST;

-- 3、 删除SQL Blacklist
DELETE SQLBLACKLIST <sql_index_number>;

增加大查询熔断资源组

说明

本样例中的数值仅用作参考,请结合业务使用姿势与starrocks_audit_db__的指标进行参考,并建议完整测试后再执行,避免影响线上已有查询。

-- 1、创建大查询熔断资源组
CREATE RESOURCE GROUP bigQueryRG
TO 
    (user='rg1_user2', query_type in ('select')),
    (db='db1')
WITH (
    'big_query_cpu_second_limit' = '100',  -- 查询使用的CPU时(秒)
    'big_query_scan_rows_limit' = '100000', -- 查询扫描的数据行数
    'big_query_mem_limit' = '1073741824' -- 查询消耗的内存大小
);

-- 2、查看所有资源组
SHOW RESOURCE GROUPS ALL;

若查询达到资源组限制,报错 exceed big query scan_rows limit,则意味此查询被成功熔断。

存算分离(多仓版)

在存算分离(多仓版)场景中,可以结合上述的 SQL 黑名单与大查询熔断资源组功能实现单个计算仓库内的用户级隔离,也可以使用让业务方绑定不同的计算仓库来天然的实现资源的隔离,详情请参见:StarRocks Multi-Warehouse(多仓)最佳实践