DBbrain 提供 SQL 限流功能,您可以通过创建 SQL 限流任务,自主设置 SQL 类型、最大并发数、限流时间、SQL 关键词,来限制数据库的请求访问量和 SQL 并发量,进而达到服务的可用性,不同的任务之间不会发生冲突。
SQL 限流功能还支持查看、关闭和删除 SQL 限流任务。
支持版本
MySQL:仅支持 MySQL5.7-20200331及以上版本、MySQL5.6-20200915及以上版本、MySQL8.0-20211202及以上版本。
TDSQL-C for MySQL:仅支持 MySQL5.7-2.1.9以上版本、MySQL8.0-3.1.5及以上版本。
操作步骤
创建 SQL 限流任务
1. 登录 DBbrain 控制台。
2. 在左侧导航栏,选择诊断优化。
3. 在页面上方选择数据库类型和实例 ID,选择实时会话页签。
4. 在实时会话页面,选择 SQL 限流页签。
5. 单击创建任务,根据页面提示配置任务参数,配置完成后,单击确定。
参数说明如下表所示。
参数 | 说明 |
SQL 类型 | 包括 SELECT、UPDATE、DELETE、INSERT、REPLACE。 |
最大并发数 | 为 SQL 最大并发数,当包含关键词的 SQL 达到最大并发数时会触发 SQL 限流策略。如果该值设为0,则表示限制所有匹配的 SQL 执行。 |
执行方式 | 包括定时关闭和手动关闭。 定时关闭:选择定时关闭后,需设置任务限流时间,提交任务后即开始执行,执行时间结束自动关闭任务。任务执行过程中也支持在任务列表操作列手动关闭任务。 手动关闭:选择手动关闭后,提交任务后将一直执行,直到在任务列表的操作列手动关闭任务,任务才可终止。 |
SQL 关键词 | 为需要限流的 SQL 关键词。 可输入 SQL 语句。系统将以英文空格、逗号和换行符为分隔符,自动拆分关键词,多个关键词之间的关系为“逻辑与”,不区分先后顺序。 |
说明:
由于 SQL 关键词按照字符串匹配,且不区分关键词的顺序及是否指代库名表名,所以 SQL 关键词输入的更多,限流越精确。
若需要分库分表限流,SQL 关键词中请输入库名前缀或表名前缀。例如,当需要对存在相同前缀的多个表(例如,user_01、user_02、user_03等)进行限流时,SQL 关键词设置示例如下:
由于 SQL 关键词按照字符串匹配,所以类似以下 SQL 语句也可能会触发上述指定关键词的限流任务。
select *,user_ from server;
当实例达到限流任当务设置的最大并发数时,含 SQL 的关键词的 SQL 语句被拒绝执行。
SQL 限流中被拒绝语句的错误信息显示为:
SQL rejected by CDB_SQL_FILTER
。查看、关闭和删除 SQL 限流任务
1. 进入 SQL 限流任务列表。
2. 查看、关闭和删除 SQL 限流任务。
列表参数说明如下表所示。
参数 | 说明 |
类型 | 包括 SELECT、UPDATE、DELETE、INSERT、REPLACE。 |
状态 | 包括运行中、已完成、已终止。 运行中:任务正在执行中。 已完成:执行方式为自动关闭的任务,在指定的任务限流时间结束后自动关闭。 已终止:分为以下两种情况。 执行方式为自动关闭的任务,在指定的任务执行时间结束前手动关闭。 执行方式为手动关闭的任务被手动关闭。 |
关键词 | 创建 SQL 限流任务时设置的关键词。 |
开始时间 | 限流任务开始执行时间。 |
剩余时间 | 限流任务剩余的限流时间。 当创建任务时任务执行时间为自动关闭: 当状态为运行中,剩余时间 = 限流时间(创建任务时设置的)- 开始时间 (任务列表中显示的)。 当状态为已完成或已终止,则剩余时间为0。 当创建任务时任务执行时间为手动关闭:剩余时间显示--。 |
最大并发数 | 创建 SQL 限流任务时设置的最大并发数。 |
来源 | 包括用户发起和自治事件。 用户发起:为实时会话页面创建的 SQL 限流任务。 自治事件:为自治中心页面配置自治服务后触发自动限流自治任务。自治中心详细介绍及操作请参见 自治服务。 |
操作 | 查看任务详情:在操作列单击详情,查看任务的开始时间、执行时间、结束时间、已拒绝 SQL 数。 关闭任务:当需要终止状态为运行中的任务时,可在操作列单击关闭。 删除任务:当需要删除状态为已终止或已完成的任务时,可单个或批量删除任务。 单个删除:在任务对应的操作列单击删除。 批量删除:在热点更新保护任务列表选择一个或多个待删除的任务,在任务列表上方单击删除。 |