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
參數管理
參數說明
您可以通過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;
