在生产环境中,需为业务模块划分资源使用,避免大查询或业务 BUG 导致集群资源过载、影响其他业务;EMR Serverless Doris 的引擎提供多种资源隔离或查询熔断方式。
产品形态 | 引擎 | 部署方式 | 适用版本 |
|---|---|---|---|
Serverless 实例 | Doris | 存算一体 | 2.1.x版本及以上 |
对于大查询防御通常有如下两种方法。
需要结合业务实际情况来选择使用。
-- 1.创建block规则 CREATE SQL_BLOCK_RULE rule_001 PROPERTIES ( "SQL" = "select \\* from t", -- SQL内容 (注意转译符号) "cardinality" = "1000", -- 扫描数据量 "partition_num" = "30", -- 扫描分区数 "tablet_num" = "10", -- 扫描分桶数 "global" = "true", -- 若为false则为用户级别生效 "enable" = "true" ); -- 2.若创建的是用户级别规则 则需要绑定用户 set property for 'root' 'SQL_block_rules' = 'rule_001';
说明
本样例中的数值仅用作参考,请结合业务使用姿势与__internal_schema.audit_log的指标进行参考,并建议完整测试后再执行,避免影响线上已有查询。
-- 1.创建大查询熔断负载组 create workload Policy test_cancel_Policy Conditions(query_time > 1000) Actions(cancel_query) properties('enabled'='true'); -- 2.查看所有资源组 SHOW WORKLOAD POLICY;
存算分离(多仓版)场景下,结合上述 SQL 黑名单与大查询熔断资源组功能,实现单个计算仓库内的用户级隔离;或通过绑定不同计算仓库,完成资源隔离。