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突增影响在线业务的稳定运行。
适用范围
仅当数据库大版本为MySQL 8.0且内核小版本大于等于20251031时,才能开启DDL限速功能。当版本不符合要求时,可以升级升级内核小版本或数据库大版本。
参数管理
参数说明
您可以通过loose_innodb_ddl_io_limit_enabled参数控制DDL限速功能的开启与关闭。开启该功能后,可以通过innodb_ddl_bps_limit参数设定BPS的上限,通过innodb_ddl_iops_limit参数设定IOPS的上限。
参数名称 | 说明 |
|
|
|
|
|
|
修改参数
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中单击参数设置。
在可修改参数页签内搜索待修改参数,并配置参数值。
单击确定,然后单击提交参数,并在弹出的窗口中选择生效的时间段。
使用方法
开启DDL限速功能
您可以参考上述修改参数方式,在RDS控制台上将
loose_innodb_ddl_io_limit_enabled参数设置为ON,并提交参数修改。设置BPS和IOPS上限
DDL限速功能开启后,可以直接在执行DDL前,在会话内设置BPS和IOPS限制。BPS上限和IOPS上限可分别单独设置(仅限制BPS或IOPS),也可以同时设置(同时限制BPS和IOPS)。
# 限制DDL的BPS为 100MB SET SESSION innodb_ddl_bps_limit = 100 * 1024 * 1024; # 限制DDL的IOPS为 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;