PolarDB mendukung fitur DDL paralel. Saat sumber daya perangkat keras tersedia dalam kluster, fitur ini dapat mempercepat pelaksanaan operasi DDL, mencegah pemblokiran operasi DML berikutnya, dan mempersingkat jendela eksekusi.
Prasyarat
Untuk membuat indeks sekunder, kluster PolarDB Anda harus memenuhi salah satu persyaratan berikut:
Kluster PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.1.7 atau yang lebih baru.
Kluster PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.10 atau yang lebih baru.
Kluster PolarDB for MySQL 5.7 dengan versi revisi 5.7.1.0.7 atau yang lebih baru.
Untuk membuat indeks kunci utama, kluster PolarDB Anda harus memenuhi salah satu persyaratan berikut:
Kluster PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.2.9 atau yang lebih baru.
Kluster PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.31 atau yang lebih baru.
Untuk informasi lebih lanjut tentang cara memeriksa versi kluster, lihat Kueri versi mesin.
Penggunaan
Setelah fitur DDL paralel diaktifkan, penggunaan sumber daya perangkat keras seperti CPU, memori, dan I/O meningkat seiring dengan jumlah thread konkuren. Hal ini dapat mempengaruhi operasi SQL lainnya yang dieksekusi pada periode yang sama. Oleh karena itu, disarankan untuk menggunakan fitur ini selama jam-jam sepi atau saat sumber daya perangkat keras mencukupi.
Batasan
Fitur DDL paralel hanya dapat mempercepat operasi DDL untuk membuat indeks kunci utama dan indeks sekunder. Indeks sekunder tidak termasuk indeks teks penuh, indeks spasial, dan indeks sekunder pada kolom virtual.
Latar Belakang
Operasi DDL tradisional dirancang berdasarkan inti tunggal dan hard disk tradisional, sehingga waktu eksekusi pada tabel besar sangat lama dengan latensi tinggi. Sebagai contoh, saat melakukan operasi DDL untuk membuat indeks sekunder, kueri DML berikutnya yang bergantung pada indeks baru akan terblokir akibat latensi tinggi dari operasi DDL. Prosesor multi-core dan Solid State Drive (SSD) memberikan dukungan perangkat keras untuk fitur DDL paralel, memungkinkannya menggunakan lebih banyak thread dan mengurangi latensi akses acak. Dalam kasus ini, fitur DDL paralel dapat digunakan untuk mempercepat proses pembuatan indeks pada tabel besar.
Menggunakan fitur DDL paralel
innodb_polar_parallel_ddl_threads
Anda dapat mengaktifkan fitur DDL paralel dengan menentukan parameter innodb_polar_parallel_ddl_threads.
Parameter
Level
Deskripsi
innodb_polar_parallel_ddl_threads
Sesi
Jumlah thread konkuren untuk setiap operasi DDL. Nilai valid: 1 hingga 16. Nilai default 1 menunjukkan bahwa operasi DDL single-threaded dilakukan.
Jika nilai parameter ini bukan 1 atau jika operasi DDL yang dijalankan digunakan untuk membuat indeks sekunder, fitur DDL paralel secara otomatis diaktifkan.
CatatanJika nilai parameter ini adalah 1, dua thread konkuren digunakan untuk setiap operasi DDL.
innodb_parallel_build_primary_index
Anda dapat mengizinkan fitur DDL paralel saat membuat indeks kunci utama dengan menentukan parameter innodb_parallel_build_primary_index:
CatatanParameter ini dalam rilis canary. Untuk mengajukan penggunaan percobaan parameter ini, kunjungi Quota Center. Klik Apply di kolom Actions yang sesuai dengan PolarDB hotspot row parameter adjustment.
Parameter
Level
Deskripsi
innodb_parallel_build_primary_index
Global
Menentukan apakah akan mengizinkan fitur DDL paralel saat membuat indeks kunci utama. Nilai default: OFF. Nilai valid:
ON
OFF
innodb_polar_use_sample_sort
Jika fitur DDL paralel belum memenuhi kebutuhan Anda, gunakan parameter innodb_polar_use_sample_sort untuk mengoptimalkan pengurutan saat membuat indeks.
Parameter
Level
Deskripsi
innodb_polar_use_sample_sort
Sesi
Menentukan apakah akan mengaktifkan fitur optimasi pengurutan sampel. Nilai default: OFF. Nilai valid:
ON
OFF
innodb_polar_use_parallel_bulk_load
Jika optimasi pengurutan sampel belum memenuhi kebutuhan Anda, gunakan parameter innodb_polar_use_parallel_bulk_load untuk mengoptimalkan proses pembuatan pohon indeks.
Parameter
Level
Deskripsi
innodb_polar_use_parallel_bulk_load
Sesi
Menentukan apakah akan mengaktifkan fitur optimasi bulk load. Nilai default: OFF. Nilai valid:
ON
OFF
Uji performa
Lingkungan uji
Kluster PolarDB for MySQL 8.0 dengan 16 core CPU dan 128 GB memori, menjalankan Edisi Kluster.
Kapasitas penyimpanan kluster adalah 50 TB.
Skema
Buat tabel bernama
t0.CREATE TABLE t0( a INT PRIMARY KEY, b INT) ENGINE=InnoDB;Data
Hasilkan data uji.
DELIMITER // CREATE PROCEDURE populate_t0() BEGIN DECLARE i int DEFAULT 1; WHILE (i <= $table_size) DO INSERT INTO t0 VALUES (i, 1000000 * RAND()); SET i = i + 1; END WHILE; END // DELIMITER ; CALL populate_t0() ;CatatanDalam pengujian aktual, ganti
$table_sizedengan jumlah rekaman yang diinginkan, seperti1000000.Pengujian ini menggunakan tabel dengan 1 juta, 10 juta, 100 juta, dan 1 miliar baris data, serta tabel yang menyimpan 1 TB data.
Tabel uji yang menyimpan 1 TB data dibuat oleh alat SysBench. Untuk informasi lebih lanjut tentang penggunaan alat SysBench, lihat Alat uji.
Metode uji
Uji laju peningkatan efisiensi eksekusi operasi DDL yang membuat indeks sekunder pada bidang
bdari tipe dataINTdengan jumlah thread konkuren berbeda saat innodb_polar_parallel_ddl_threads disetel ke 1, 2, 4, 8, 16, dan 32. Fitur DDL paralel diaktifkan untuk tabel dengan volume data yang berbeda.Hasil uji
Gambar berikut menunjukkan rasio percepatan DDL paralel setelah hanya parameter innodb_polar_parallel_ddl_threads disetel ke ON.

Gambar berikut menunjukkan rasio percepatan DDL paralel setelah parameter innodb_polar_parallel_ddl_threads dan innodb_polar_use_sample_sort disetel ke ON.

Gambar berikut menunjukkan rasio percepatan DDL paralel setelah parameter innodb_polar_parallel_ddl_threads, innodb_polar_use_sample_sort, dan innodb_polar_use_parallel_bulk_load disetel ke ON.

Hubungi kami
Jika Anda memiliki pertanyaan tentang operasi DDL, hubungi kami.