更新时间:2026-08-18 GMT+08:00
分享

新建SQL限流规则

操作场景

SQL限流是指设置原始SQL语句或者Query ID,当所匹配的SQL语句超过设置的最大并发数时,数据库实例会拒绝执行此SQL。从而解决SQL并发数过高导致的实例不稳定问题。使用华为云自研插件rds_pg_sql_ccl可以实现RDS for PostgreSQL的SQL限流能力。

主要的使用场景有:

  • 业务量突增:通过限制某类SQL的执行保障实例的稳定性。
  • 保障核心任务:通过限制其他SQL的执行从而降低资源的消耗保障核心任务的顺利完成。

版本限制

SQL限流支持的版本如下:

  • RDS for PostgreSQL 15及以上的所有版本。
  • RDS for PostgreSQL 14版本,对应的小版本为14.8及以上版本。
  • RDS for PostgreSQL 13版本,对应的小版本为13.11及以上版本。
  • RDS for PostgreSQL 12版本,对应的小版本为12.15及以上版本。
  • RDS for PostgreSQL 11版本,对应的小版本为11.20及以上版本。

功能限制

  • 内置用户(rdsAdmin、rdsMetric、rdsRepl、rdsBackup)的SQL语句不受限流规则影响。
  • 使用SQL限流功能需要安装rds_pg_sql_ccl插件,该插件是RDS for PostgreSQL自研的内核限流插件,详见通过界面安装和卸载插件

查看推荐规则

先查看推荐规则,按照用户选择的推荐因子分析当前执行的会话,推荐Top会话对应的SQL限流规则,再参考推荐规则新建限流规则

  1. 登录RDS管理控制台
  2. 单击管理控制台左上角的,选择区域。
  3. 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“概览”页签。
  4. 在左侧导航栏选择“智能DBA助手 > SQL分析与优化”。
  5. 选择“SQL限流”。
  6. 单击“推荐规则”,筛选关键字相同的会话,按照“全部”、“平均执行时间”、“最大执行时间”、“执行次数”查询TOP SQL的推荐规则。

    图1 推荐规则

    按查询规则取前1,000个会话,仅选取其中的SELECT类型会话,每个会话提取关键字,关键字相同的会话分为一组,按以下策略推荐:

    • 全部:分别以每组内会话平均执行耗时、最大执行耗时、执行次数降序排序,各取Top N的组推荐。
    • 平均执行时间:以每组内会话平均执行时间降序排序,取Top N的组推荐。
    • 最大执行时间:以每组内会话最大执行时间降序排序,取Top N的组推荐。
    • 执行次数:以每组内会话执行次数降序排序,取Top N的组推荐。

新建限流规则

  1. 登录RDS管理控制台
  2. 单击管理控制台左上角的,选择区域。
  3. 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“概览”页签。
  4. 在左侧导航栏选择“智能DBA助手”下的“SQL分析与优化”。
  5. 选择“SQL限流”。
  6. 打开,开启SQL限流开关。

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

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

    请根据业务和资源使用的实际情况合理配置SQL限流规则,否则可能会影响业务。

    图2 新建SQL限流规则(SQL语句生成关键字)
    图3 新建SQL限流规则(直接输入关键字)
    表1 SQL限流规则参数

    参数

    说明

    限流方式

    • 原始SQL语句

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

    • Query ID

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

    • 关键字限流:例如关键字是“select~a”,含义为:select以及a为该并发控制所包含的两个关键字,~为关键字间隔符,也就是说如果执行SQL语句中包含select与a两个关键字,那么命中此条并发控制规则。

    最大并发数

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

    取值范围为0~50000,为0表示禁止执行符合该规则的SQL语句。

    最大等待时间

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

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

    数据库实例重启后,所有规则失效,需要重新启用才会继续生效。

后续操作

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

  • 单击“停用”,即可停用限流规则。
  • 单击“删除”,即可删除限流规则,删除启用状态下的限流规则,该规则不会继续生效。
图4 删除SQL限流

相关文档