DDL限速

AliSQL支持DDL限速功能,用户可以手动设置BPSIOPS上限,限制DDLIO资源的消耗,以保证业务的平稳运行。

功能说明

背景:社区版MySQLDDL的执行过程中不支持限速功能,可能导致单个DDL的执行过程消耗大量的资源(DDL执行过程中可能会产生大量IO操作),尤其是在MySQL 8.0版本支持并行DDL之后,DDL执行过程消耗的资源可能更多,从而影响在线业务的运行。

简介:AliSQL基于社区版MySQLDDL执行逻辑,实现了DDL限速功能。该功能允许用户为单个DDL操作设置具体的BPSIOPS上限,限制DDL执行过程中的IO资源消耗,避免IO突增影响在线业务的稳定运行。

适用范围

仅当数据库大版本为MySQL 8.0且内核小版本大于等于20251031时,才能开启DDL限速功能。当版本不符合要求时,可以升级升级内核小版本数据库大版本

参数管理

参数说明

您可以通过loose_innodb_ddl_io_limit_enabled参数控制DDL限速功能的开启与关闭。开启该功能后,可以通过innodb_ddl_bps_limit参数设定BPS的上限,通过innodb_ddl_iops_limit参数设定IOPS的上限。

参数名称

说明

loose_innodb_ddl_io_limit_enabled

  • 描述:DDL限速功能开关。

  • 参数范围:全局参数。

  • 数据类型:Boolean

  • 默认值:OFF

  • 取值范围:ONOFF

  • 是否需要重启实例:否。

innodb_ddl_bps_limit

  • 描述:设定BPS的上限

  • 参数范围:会话级别。

  • 数据类型:LONG

  • 默认值:0(表示不限制BPS)

  • 取值范围:0~18446744073709551615

  • 是否需要重启实例:否

innodb_ddl_iops_limit

  • 描述:设定IOPS的上限

  • 参数范围:会话级别。

  • 数据类型:LONG

  • 默认值:0(表示不限制IOPS)

  • 取值范围:0~18446744073709551615

  • 是否需要重启实例:否

修改参数

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏中单击参数设置

  3. 可修改参数页签内搜索待修改参数,并配置参数值。

  4. 单击确定,然后单击提交参数,并在弹出的窗口中选择生效的时间段。

使用方法

  1. 开启DDL限速功能

    您可以参考上述修改参数方式,在RDS控制台上将loose_innodb_ddl_io_limit_enabled参数设置为ON,并提交参数修改。

  2. 设置BPSIOPS上限

    DDL限速功能开启后,可以直接在执行DDL前,在会话内设置BPSIOPS限制。BPS上限和IOPS上限可分别单独设置(仅限制BPSIOPS),也可以同时设置(同时限制BPSIOPS)。

    # 限制DDLBPS为 100MB
    SET SESSION innodb_ddl_bps_limit = 100 * 1024 * 1024;
    
    # 限制DDLIOPS为 5000
    SET SESSION innodb_ddl_iops_limit = 5000;

功能效果

通过对比直接执行DDL限速执行DDL,观察两种方式对实例IO资源的消耗情况。

# 1. 直接执行
ALTER TABLE t1 ADD INDEX idx_1(c1);
ALTER TABLE t1 DROP INDEX idx_1;
OPTIMIZE TABLE t1;


# 2. 设置 BPS 限制 160MB
SET SESSION innodb_ddl_bps_limit = 160 * 1024 * 1024;
ALTER TABLE t1 ADD INDEX idx_1(c1);
ALTER TABLE t1 DROP INDEX idx_1;
OPTIMIZE TABLE t1;

image.png