StarRocks SQL 拦截

最近更新时间:2026-07-03 09:28:03

我的收藏

功能介绍

腾讯云 EMR StarRocks 提供 SQL 拦截功能,帮助用户在控制台以可视化方式管理 SQL 黑名单规则,通过正则表达式匹配 SQL 文本,对不符合规范的 SQL 语句(如全表扫描、无 WHERE 条件的 DELETE 操作、高资源消耗查询等)进行自动拦截,保障集群稳定性,降低运维门槛。
注意:
1. 当前该功能为白名单灰度开放,若需要体验可通过 提交工单 开通白名单使用。
2. SQL 拦截功能底层依赖 StarRocks 社区 SQL Blacklist 能力,支持动态配置、即时生效,无需重启集群。

前提条件

1. 集群类型为 StarRocks,且版本 ≥ v2.3。不同拦截范围对 StarRocks 版本有不同要求:
≥ v2.3 <v3.1仅拦截 SELECT,
≥ v3.1 < 3.4仅拦截 SELECT + INSERT
2. 集群状态为“运行中”,FE 节点正常运行。
3. 登录账号需具有集群管理权限。

注意事项

1. 所有 SQL 拦截规则配置动态生效,无需重启 FE/BE 进程。
2. 同一 SQL 命中多条正则规则时,底层按规则创建顺序(Index)进行匹配,命中第一条即终止拦截,不继续匹配后续规则。
3. 正则表达式中,括号 ( ) 由平台自动处理转义,其他特殊字符(. * + ? 等)需用户手动添加 \\ 前缀。
4. 拦截功能开关默认为关闭状态,开启后已启用的规则将立即生效。
5. 删除的规则无法恢复,请谨慎操作。

操作步骤

步骤一:进入 SQL 拦截管理页面

1. 登录 EMR 控制台,单击目标 StarRocks 集群 ID,进入集群详情页。
2. 在顶部导航栏中,单击SQL 拦截标签页,进入 SQL 拦截管理页面。
3. 页面顶部展示 SQL 拦截配置状态栏,包含拦截功能总开关和规则统计信息。

步骤二:开启 SQL 拦截功能

1. 在 SQL 拦截管理页面顶部,找到“SQL 拦截配置”开关。
2. 单击开关,将其切换为“开启”状态(绿色)。
3. 开启后,所有状态为“已启用”的拦截规则将立即生效,开始拦截不符合规则的 SQL 语句。
4. 关闭拦截功能总开关时,系统将弹出确认弹窗,提示“关闭后 N 条已启用规则暂停生效,SQL 将不受任何限制执行”,请确认后操作。

步骤三:创建拦截规则

1. 在“拦截规则”下,单击“新建规则”按钮,弹出规则配置弹窗,按以下说明配置规则:
2. 规则类型选择:
类型
说明
支持状态
SQL 正则黑名单
通过正则表达式匹配 SQL 文本,命中即拒绝执行
支持
3. SQL 正则黑名单配置项(选择此类型后展示):
规则名称(必填):长度限制 1~128 个字符,支持字母、数字、中文、-、_。
匹配模式(必填):支持两种模式:• 快捷选择:内置高频拦截场景复选项,可多选,每项生成一条独立规则• 自定义正则:自由输入正则表达式,括号由平台自动转义
拦截范围(必填):单选:仅 SELECT / SELECT + INSERT / SELECT + INSERT + CTAS,系统根据集群 StarRocks 版本自动屏蔽不支持的选项
快捷选项说明(快捷选择模式):
选项
说明
对应正则(示例)
禁止 SELECT *
防止全表扫描大表
select \\\\* from .+
禁止 count(*)
高频慢查询场景
select count\\\\(\\\\*\\\\) from .+
禁止 count(distinct ...)
聚合去重内存消耗过大
select count\\\\(distinct .+\\\\) from .+
禁止 ORDER BY 无 LIMIT
可能导致全量排序 OOM
select .+ order by .+(?!.*limit).*
4. 配置完成后,可选择:
“保存并生效”(推荐):规则创建后立即下发生效。
“保存并禁用”:规则创建为禁用状态,不立即生效,后续可按需启用。
“取消”:放弃当前配置,关闭弹窗。
警告:
下发黑名单:服务重启及服务角色 FE 节点重启时,黑名单规则将失效,需重新点击下方黑名单方可生效。

步骤四:管理拦截规则

在“拦截规则”列表中,可对已有规则进行以下管理操作:
1. 启用 / 禁用规则:单击规则行右侧开关,即时启用或禁用单条规则,无需重启集群。
2. 查看规则详情:单击规则名称,展开规则详情,查看完整的匹配正则和拦截范围。
3. 删除规则:单击操作列的删除,在确认弹窗中输入验证信息后完成删除。(注意:删除后无法恢复。)