すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:DDL スロットリング

最終更新日:May 13, 2026

AliSQL は DDL スロットリングをサポートしています。これにより、DDL 操作に対する BPS と IOPS の上限を設定できます。I/O リソース消費を制御することで、オンラインサービスの安定性を確保できます。

概要

背景:MySQL Community Edition では DDL 操作のスロットリングが行われないため、I/O 消費が高くなる可能性があります。この問題は MySQL 8.0 でより顕著です。MySQL 8.0 では、パラレル DDL によって I/O 使用量がさらに増加し、オンラインサービスに影響を与える可能性があります。

紹介:AliSQL は、MySQL Community Edition の DDL 実行ロジックを拡張することで DDL スロットリングを実装しています。この機能では、個々の DDL 操作に対して BPS と IOPS の制限を設定できます。この方法で I/O リソース消費を制限することで、I/O スパイクを防止し、オンラインサービスの安定性を維持できます。

前提条件

DDL スロットリングを使用するには、インスタンスが次のいずれかのバージョン要件を満たしている必要があります。

  • MySQL 8.4

  • マイナーエンジンバージョンが 20251031 以降の MySQL 8.0

インスタンスがこれらの要件を満たしていない場合は、マイナーエンジンバージョンまたはメジャーエンジンバージョンをアップグレードできます。

パラメーター

パラメーターの詳細

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

  • 有効な値:ON または OFF

  • 再起動が必要:いいえ

innodb_ddl_bps_limit

  • 説明:BPS 制限を設定します。

  • スコープ:セッション

  • データ型:BIGINT UNSIGNED

  • デフォルト値:0 (BPS 制限なし)

  • 有効な値:0 ~ 18446744073709551615

  • 再起動が必要:いいえ

innodb_ddl_iops_limit

  • 説明:IOPS 制限を設定します。

  • スコープ:セッション

  • データ型:BIGINT UNSIGNED

  • デフォルト値:0 (IOPS 制限なし)

  • 有効な値:0 ~ 18446744073709551615

  • 再起動が必要:いいえ

パラメーターの変更

  1. RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
  2. 左側のナビゲーションペインで [パラメーター設定] をクリックします。

  3. [編集可能なパラメーター] タブで、対象のパラメーターを見つけて値を設定します。

  4. [OK] をクリックし、続いて [パラメーターの送信] をクリックします。表示されるダイアログボックスで、変更をいつ有効にするかを指定します。

操作手順

  1. DDL スロットリング機能の有効化

    「パラメーターの変更」セクションの手順に従い、RDS コンソールで loose_innodb_ddl_io_limit_enabled パラメーターを ON に設定し、変更を送信します。

  2. BPS と IOPS 制限の設定

    DDL スロットリングを有効にした後、DDL 文を実行する前に、セッション内で BPS と IOPS の制限を設定します。BPS、IOPS、またはその両方に制限を適用できます。

    # DDL 操作の BPS を 100 MB に制限します。
    SET SESSION innodb_ddl_bps_limit = 100 * 1024 * 1024;
    
    # DDL 操作の IOPS を 5,000 に制限します。
    SET SESSION innodb_ddl_iops_limit = 5000;

この例では、DDL 文を直接実行した場合と、スロットリングを有効にして実行した場合のインスタンスの I/O 消費量を比較します。

# 1. DDL 文を直接実行します。
ALTER TABLE t1 ADD INDEX idx_1(c1);
ALTER TABLE t1 DROP INDEX idx_1;
OPTIMIZE TABLE t1;


# 2. BPS 制限を 160 MB に設定します。
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