功能描述
SQL 限流功能适用于流量过高引起的 CPU 消耗过大的场景。通过创建 SQL 限流任务,用户可自主设置 SQL 类型、最大并发数、限流时间、SQL 关键词,来控制数据库的请求访问量和 SQL 并发量,从而达到服务的可用性。
说明:
SQL 限流支持云数据库 MongoDB 4.0和7.0版本。
SQL 限流中被拒绝语句的错误码显示为SQL rejected by CDB_SQL_FILTER。
创建 SQL 限流
2. 在左侧导航栏,选择诊断优化。
3. 在页面上方选择 MongoDB 数据库类型及实例 ID,选择实时会话页签。
4. 在页面下方可选择 SQL 限流 模块。
5. 创建限流任务。
5.1 请单击登录,输入数据库账号和密码,单击确定。
5.2 在页面中单击创建任务,配置以下参数,单击确定。
SQL 类型:包含 find、insert、update、delete。
最大并发数:SQL 最大并发数,当包含关键词的 SQL 达到最大并发数时会触发限流策略。如果该值设为0,则表示限制所有匹配的 SQL 执行。
执行方式:支持定时关闭和手动关闭。
限流时间:选择定时关闭时,需选择 SQL 限流的生效时间。
SQL 关键词:需要限流的 SQL 关键词,当包含多个关键词时,需要以英文逗号分隔,逗号分隔的条件是逻辑与的关系,且逗号不能作为关键词。
6. 查看 SQL 限流任务状态和详情。
单击操作列的详情,可以查看 SQL 限流详情。
限流任务开启后,若还在所设置的限流时间以内,列表中的状态为运行中,单击操作列的关闭,可以提前关闭限流任务,状态列将变为已终止。
限流任务开启后,若自动达到所设定的限流时间,列表中的状态将变为已终止。
单击操作列的删除,可以对状态为已终止和已完成的限流任务进行删除。
SQL 限流案例及效果
数据库流量过高,导致实例 CPU 消耗过大。
1. 通过控制台 MongoTop 获取表级流量统计,从 MongoTop 可以看出 test11 表流量过高,假设业务主要流量为 test.test10 表的读流量,test.test11 为异常流量。
2. 随后开启 SQL 限流任务,对 test.test11 表进行限流。
3. 限流前后 CPU 性能趋势图如下,可看出限流后 CPU 消耗迅速下降。