All Products
Search
Document Center

PolarDB:DDL multi-way merging and sorting

Last Updated:Mar 29, 2026

Membuat indeks pada tabel besar dapat memakan waktu beberapa menit atau lebih, sehingga memblokir operasi DDL konkuren selama periode tersebut. Fitur DDL multi-way merging and sorting menggantikan algoritma merge sort eksternal dua arah bawaan dengan pengurutan N-arahan (N-way), yang mengurangi jumlah siklus baca/tulis file antara dan memperpendek waktu total pembuatan indeks.

Prasyarat

Sebelum memulai, pastikan kluster PolarDB Anda memenuhi salah satu persyaratan versi berikut:

  • PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.2.5 atau lebih baru

  • PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.28 atau lebih baru

  • PolarDB for MySQL 5.7 dengan versi revisi 5.7.1.0.23 atau lebih baru

Untuk memeriksa versi kluster Anda, lihat Query the engine version.

Cara kerja

Pembuatan indeks di InnoDB berlangsung dalam tiga tahap:

  1. Scan: Indeks terkluster dipindai dan entri pengurutan ditulis ke buffer pengurutan. Saat buffer penuh, entri tersebut dituliskan ke file antara temporary sebagai run yang telah diurutkan.

  2. Merge sort: Setelah semua run ditulis, InnoDB menggabungkannya. Algoritma pengurutan dua arah bawaan menggabungkan dua run sekaligus, sehingga memerlukan beberapa kali akses ulang ke file antara. Penggabungan N-arahan (N-way) menggabungkan lebih banyak run per siklus, sehingga mengurangi jumlah total akses dan I/O file antara.

  3. B-tree insertion: Entri yang telah sepenuhnya diurutkan dimasukkan ke dalam indeks Pohon-B (B-tree).

Menambah jumlah arahan (ways) mengurangi jumlah akses file antara dengan biaya tambahan penggunaan memori: setiap penambahan arahan memerlukan satu buffer pengurutan tambahan sebesar innodb_sort_buffer_size byte.

Batasan

  • Indeks full-text dan indeks spasial tidak didukung.

  • Penggunaan memori meningkat sebanding dengan jumlah arahan. Mengaktifkan penggabungan N-arahan meningkatkan ukuran memori yang digunakan oleh kluster sebesar (N+1) × innodb_sort_buffer_size byte.

Konfigurasi penggabungan multi-arahan

Atur parameter innodb_polar_parallel_merge_ways pada tingkat session sebelum menjalankan pernyataan DDL Anda.

ParameterRuang LingkupNilai yang ValidBawaanDeskripsi
innodb_polar_parallel_merge_waysSession2–162Jumlah arahan untuk penggabungan dan pengurutan. Nilai bawaan 2 menggunakan penggabungan dua arahan standar. Atur nilai lebih dari 2 untuk mengaktifkan penggabungan multi-arahan.

Pengaturan ini hanya berlaku untuk session saat ini dan akan kembali ke nilai bawaan setelah session berakhir.

Contoh: Aktifkan penggabungan delapan arahan dan buat indeks pada tabel besar.

SET innodb_polar_parallel_merge_ways = 8;
ALTER TABLE table_1 ADD INDEX name_index (seller_name);

Uji kinerja

Pengujian berikut membandingkan penggabungan dua arahan dan delapan arahan pada tabel berisi 100 juta baris untuk menunjukkan dampak peningkatan jumlah arahan.

Lingkungan pengujian

ItemSpesifikasi
KlusterPolarDB for MySQL 8.0
CPU8 core
Memori32 GB
Kapasitas penyimpanan50 TB

Skema

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;

Data uji: 100.000.000 baris dihasilkan menggunakan prosedur tersimpan berikut.

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);

Operasi uji: ALTER TABLE table_1 ADD INDEX name_index (seller_name);

Hasil

KonfigurasiWaktu (detik)
Pengurutan gabung delapan arah353
Penggabungan dan pengurutan dua arahan485

Penggabungan delapan arahan mengurangi waktu pembuatan indeks sekitar 27% dibandingkan dengan penggabungan dua arahan pada konfigurasi dataset dan perangkat keras ini.

Hubungi kami

Jika Anda memiliki pertanyaan mengenai operasi DDL, silakan contact technical support.

Topik terkait