You need to enable JavaScript to run this app.
导航
SQL 限流
最近更新时间:2025.01.14 20:51:14首次发布时间:2021.10.11 18:06:04

SQL 限流功能用于控制数据库的请求访问量和 SQL 并发量,从而保障服务的可用性。本文介绍如何在云数据库 MySQL 版控制台管理 SQL 限流任务,例如开启 SQL 限流功能、创建或删除 SQL 限流任务等。

前提条件

已创建实例且实例处于运行中状态。具体操作,请参见创建实例

注意事项

  • 对于 MySQL 8.0 版本实例,仅数据库版本为 MySQL 8.0.32 及以上的实例支持 SQL 限流功能。

  • SQL 限流是应急措施,建议您在完成限流后及时关闭限流任务。

  • 最多支持创建 128 条 SQL 限流任务。

  • 删除 SQL 限流任务后,将立即关闭并删除所选的限流任务。请谨慎操作。

创建 SQL 限流任务

  1. 登录云数据库 MySQL 版控制台

  2. 在顶部菜单栏的左上角,选择实例所属的项目和地域。

    说明

    如未设置实例的所属项目,本操作应选择项目为账号全部资源

  3. 在左侧导航栏,选择 MySQL > 实例列表

  4. 实例列表页面,单击目标实例名称。

  5. 自治服务页签,单击 SQL 限流

  6. 在页面右上角,确认 SQL 限流功能已开启。

    说明

    如 SQL 限流功能为关闭状态,单击 SQL 限流功能开关,即可开启 SQL 限流功能。

  7. 在页面左上角,单击创建任务

  8. SQL 限流任务对话框,设置以下参数信息。

    参数说明
    SQL 类型从下拉列表中选择需要限流的 SQL 类型,取值包括 SELECTUPDATEDELETEINSERTREPLACE

    限流时长

    按需设置限流任务的生效时长,取值范围为 [1, 99999],单位为:min。

    说明

    在任务达到限流时长后,将自动关闭限流任务,也支持手动提前关闭。

    最大并发数设置 SQL 限流任务的最大并发数,表示同时执行的 SQL 语句达到最大并发数时将触发 SQL 限流。如果 SQL 限流设置为 0 时,表示限制所选 SQL 类型的所有 SQL 执行。

    SQL 关键词

    按需设置需要限流的 SQL 关键词,然后单击关键字生成和校验,系统将自动拆分关键词,并以 ~ 为分隔符。例如源 SQL 语句为 select * from test where name = das,则拆分后的限流关键词为 select~from~test~where~name~das,表示 selectfromtestwherenamedas 为该并发控制所包含的六个关键字,~ 为关键字间隔符,也就是说如果执行 SQL 语句中包含 selectfromtestwherenamedas 六个关键字,那么命中此条并发控制规则。

    说明

    在任务达到限流时长后,将自动关闭限流任务,也支持手动提前关闭。

    • 关键词会有序匹配 SQL 语句,例如 select * from test where a > 1 and b > 1 只会匹配到 ******* select ~ from ~test ~ where ~ a ~ b,不会匹配到 ******* select * from test where b > 1 and a > 1
    • 关键字首尾的空白等字符均会被忽略,包括 \n\r\t
    • 如果未单击关键字生成和校验,将以整句为规则进行限流控制。
    • 关键词不允许有英文的逗号(,)、单引号(,)和分号(;)。
  9. 单击确定

说明

  • SQL 限流任务创建后会自动启用。
  • 当数据库实例负载过高时,会导致限流规则创建失败。需要重启实例后再重新创建限流规则。

查看 SQL 限流任务

  1. 登录云数据库 MySQL 版控制台

  2. 在顶部菜单栏的左上角,选择实例所属的项目和地域。

    说明

    如未设置实例的所属项目,本操作应选择项目为账号全部资源

  3. 在左侧导航栏,选择 MySQL > 实例列表

  4. 实例列表页面,单击目标实例名称。

  5. 自治服务页签,单击 SQL 限流,即可查看 SQL 限流任务的类型状态关键词开始时间结束时间剩余时间结束时间最大并发数

启用/关闭 SQL 限流任务

  1. 登录云数据库 MySQL 版控制台

  2. 在顶部菜单栏的左上角,选择实例所属的项目和地域。

    说明

    如未设置实例的所属项目,本操作应选择项目为账号全部资源

  3. 在左侧导航栏,选择 MySQL > 实例列表

  4. 实例列表页面,单击目标实例名称。

  5. 自治服务页签,单击 SQL 限流

  6. SQL 限流任务列表中,单击目标任务操作列的启用关闭,在弹出的确认对话框中,单击确定,即可启用或关闭目标任务。

删除 SQL 限流任务

说明

正在运行中的 SQL 限流任务也支持删除。删除后,将立即关闭并删除所选的限流任务,请谨慎操作。

  1. 登录云数据库 MySQL 版控制台

  2. 在顶部菜单栏的左上角,选择实例所属的项目和地域。

    说明

    如未设置实例的所属项目,本操作应选择项目为账号全部资源

  3. 在左侧导航栏,选择 MySQL > 实例列表

  4. 实例列表页面,单击目标实例名称。

  5. 自治服务页签,单击 SQL 限流

  6. SQL 限流任务列表中,单击目标 SQL 限流任务的操作列的删除

  7. 确定删除吗? 对话框中,单击确定