AliSQL支持DDL限速功能,用户可以手动设置BPS和IOPS上限,限制DDL对IO资源的消耗,以保证业务的平稳运行。
背景:社区版MySQL在DDL的执行过程中不支持限速功能,可能导致单个DDL的执行过程消耗大量的资源(DDL执行过程中可能会产生大量IO操作),尤其是在MySQL 8.0版本支持并行DDL之后,DDL执行过程消耗的资源可能更多,从而影响在线业务的运行。 简介:AliSQL基于社区版MySQL的DDL执行逻辑,实现了DDL限速功能。该功能允许用户为单个DDL操作设置具体的BPS和IOPS上限,限制DDL执行过程中的IO资源消耗,避免IO突增影响在线业务的稳定运行。 数据库版本需满足以下要求才能开启DDL限速功能: MySQL 8.4 MySQL 8.0且内核小版本大于等于20251031 您可以通过 参数名称 说明 描述:DDL限速功能开关。 参数范围:全局参数。 数据类型: 默认值: 取值范围: 是否需要重启实例:否。 描述:设定BPS的上限 参数范围:会话级别。 数据类型: 默认值:0(表示不限制BPS) 取值范围:0~18446744073709551615 是否需要重启实例:否 描述:设定IOPS的上限 参数范围:会话级别。 数据类型: 默认值:0(表示不限制IOPS) 取值范围:0~18446744073709551615 是否需要重启实例:否 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。 在左侧导航栏中单击参数设置。 在可修改参数页签内搜索待修改参数,并配置参数值。 单击确定,然后单击提交参数,并在弹出的窗口中选择生效的时间段。 开启DDL限速功能 您可以参考上述修改参数方式,在RDS控制台上将 设置BPS和IOPS上限 DDL限速功能开启后,可以直接在执行DDL前,在会话内设置BPS和IOPS限制。BPS上限和IOPS上限可分别单独设置(仅限制BPS或IOPS),也可以同时设置(同时限制BPS和IOPS)。 通过对比直接执行DDL与限速执行DDL,观察两种方式对实例IO资源的消耗情况。 功能说明
适用范围
参数管理
参数说明
loose_innodb_ddl_io_limit_enabled参数控制DDL限速功能的开启与关闭。开启该功能后,可以通过innodb_ddl_bps_limit参数设定BPS的上限,通过innodb_ddl_iops_limit参数设定IOPS的上限。loose_innodb_ddl_io_limit_enabledBoolean。OFF。ON或OFF。innodb_ddl_bps_limitLONG。innodb_ddl_iops_limitLONG。修改参数
使用方法
loose_innodb_ddl_io_limit_enabled参数设置为ON,并提交参数修改。# 限制DDL的BPS为 100MBSET SESSION innodb_ddl_bps_limit = 100 * 1024 * 1024;
# 限制DDL的IOPS为 5000SET SESSION innodb_ddl_iops_limit = 5000;
功能效果
# 1. 直接执行ALTER TABLE t1 ADD INDEX idx_1(c1);ALTER TABLE t1 DROP INDEX idx_1;
OPTIMIZE TABLE t1;
# 2. 设置 BPS 限制 160MBSET 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;
