全部產品
Search
文件中心

ApsaraDB RDS:DDL限速

更新時間:May 13, 2026

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的上限。

參數名稱

說明

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. 設定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;

image.png