更新时间:2024-11-06 GMT+08:00
分享

新建SQL限流规则

操作场景

SQL限流是指通过设置语句类型、关键字等匹配SQL语句,当所匹配的SQL语句超过设置的最大并发数时,数据库实例会拒绝执行此SQL。从而解决SQL并发数过高导致的实例不稳定问题。

可能引起SQL并发过高的场景有:

  • 业务流量突增:出现缓存穿透、异常调用等情况,导致某类SQL并发数急剧上升。
  • 慢查询堆积:未创建索引的SQL被大量调用,出现大量慢SQL,影响正常业务。

版本约束限制

SQL限流支持15.4、14.8、13.11、 12.15、11.20 及以上数据库引擎版本。

功能限制

  • 内置用户(rdsAdmin、rdsMetric、rdsRepl、rdsBackup)的SQL语句不受限流规则影响。
  • 使用SQL限流功能需要安装rds_pg_sql_ccl插件,该插件是RDS for PostgreSQL自研的内核限流插件,详见通过界面安装和卸载插件
  • 当SQL语句匹配多条限流规则时,优先生效最新添加的规则,之前的规则不再生效。
  • 在添加SQL限流规则之前,已经开始执行的SQL语句,不会被记入并发数。
  • 若复制时延过大,针对只读实例,新增或删除限流规则不会立刻生效。
  • 系统表不受SQL限流的限制。
  • 不涉及数据查询的SQL不受限流的限制,例如:select sleep(***);
  • 暂不支持对存储过程、触发器、函数内的SQL做限流设置。
  • 您可以在DAS执行如下SQL查看SQL限流规则的执行情况:select * from information_schema.rds_sql_filter_info;
  • 当设置过多限流规则时,对性能有一定影响,使用后请删除多余的规则。
  • SQL限流规则不支持约束系统库。

操作步骤

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域。
  3. 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
  4. 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“概览”页签。
  5. 在左侧导航栏选择“智能DBA助手 > 历史诊断”。
  6. 选择“全量SQL > SQL限流”。
  7. 打开,开启SQL限流开关。

    SQL限流开关打开后,限流规则才能生效。

  8. 单击“新建SQL限流规则”,配置SQL限流规则参数,参数说明请参见表1

    图1 新建SQL限流规则
    表1 SQL限流规则参数

    参数

    说明

    限流方式

    • 原始SQL语句

      通过SQL语句创建的限流规则无法限制绑定变量的SQL语句。

    • Query ID

      同一个数据库中,不能创建重复(QUERY ID相同)的限流规则;不同的数据库中,可以创建重复的限流规则。

    最大并发数

    输入最大并发数,满足同一规则的语句最大并发数,超过最大并发数会被拒绝执行。

    取值范围为0~50000,为0表示不限制最大并发数。

    最大等待时间

    被限流SQL的等待时间,取值范围为0~1000000000。

  9. 确认无误后,单击“确定”
  10. SQL限流规则创建后不会立刻生效,单击“启用”使规则生效。

后续操作

如果不需要此条SQL限流规则,在操作列可以停用或删除规则。

图2 删除SQL限流

相关文档