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

PolarDB:DDL 多方向マージソート

最終更新日:Oct 11, 2026

PolarDB は、DDL 多方向マージおよびソート機能を導入しています。大規模なテーブルにインデックスを作成する DDL 操作は通常、時間がかかります。DDL 多方向マージおよびソートを使用すると、インデックス作成中のインデックスのソートにかかる時間を短縮できます。

前提条件

PolarDB クラスターは、次のいずれかのバージョン要件を満たす必要があります:

  • リビジョンバージョンが 8.0.2.2.5 以降の PolarDB for MySQL 8.0.2。

  • PolarDB for MySQL 8.0.1、リビジョンバージョン 8.0.1.1.28 以降。

  • リビジョンバージョンが 5.7.1.0.23 以降の PolarDB for MySQL 5.7。

クラスターのバージョンを確認するには、「エンジンバージョンの照会」をご参照ください。

注意事項

  • DDL 多方向マージソートは、全文索引または空間インデックスではサポートされていません。

  • DDL 多方向マージソートを使用すると、クラスターのメモリ使用量がわずかに増加します。N 方向マージソートを有効にした場合、ソート中にクラスターが使用するメモリ量は (N+1)*innodb_sort_buffer_size バイトです。

使用方法

次の innodb_polar_parallel_merge_ways パラメーターを使用して、マージソートの方向数を指定します:

パラメーター

レベル

説明

innodb_polar_parallel_merge_ways

セッション

インデックス作成時のマージソートの方向数を指定します。有効な値: 2~16。デフォルト値: 2 (2 方向マージソートを示します)。2 より大きい値を設定すると、多方向マージソートが有効になります。

性能テスト

  • テスト環境

    • 8 コア、32 GB メモリの PolarDB for MySQL 8.0 クラスター。

    • クラスターのストレージ容量は 50 TB です。

  • テストテーブルのスキーマ

    次のステートメントを使用して、テーブル table_1 を作成します:

    CREATE TABLE `table_1` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `seller_id` bigint(20) DEFAULT NULL,
    `seller_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
    `gmt_create` varchar(30) DEFAULT NULL,
    `update_time` varchar(30) DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB;
  • テストテーブルのデータ

    次のステートメントを使用してテストデータを生成します:

    delimiter ||
    CREATE PROCEDURE populate_0(IN NUM INT)
    BEGIN
    DECLARE sid INT;
    DECLARE suffix_name INT;
    DECLARE i INT;
    SET sid=1000;
    SET suffix_name=10;
    SET i=1;
    START TRANSACTION;
    WHILE i <= NUM
    DO
    INSERT INTO table_1(seller_id,seller_name,gmt_create,update_time) VALUES(sid,CONCAT('sellername',suffix_name),NOW(),NOW());
    SET suffix_name=suffix_name+1;
    SET sid=sid+1;
    SET i=i+1;
    END WHILE;
    COMMIT;
    END ||
    delimiter ;
    CALL populate_0(100000000) ;
  • テスト方法と結果

    データの挿入後、8 方向マージソートと 2 方向マージソートをそれぞれ設定し、SQL ステートメント alter table table_1 add index name_index (seller_name); を実行して、DDL 実行効率の改善を検証します:

    マージソートの方向数

    所要時間 (秒)

    8 方向マージソート

    353

    2 方向マージソート

    485

お問い合わせ

DDL 操作についてご質問がある場合は、「お問い合わせ」をご利用ください。