PolarDB mendukung fitur parallel Data Definition Language (DDL). Saat sumber daya perangkat keras database sedang idle, Anda dapat menggunakan fitur ini untuk mempercepat eksekusi DDL, sehingga menghindari pemblokiran operasi Data Manipulation Language (DML) berikutnya dan mempersingkat durasi operasi DDL.
Cakupan Penerapan
Untuk membuat indeks sekunder, kluster PolarDB Anda harus memenuhi salah satu persyaratan versi berikut:
PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.1.7 atau lebih baru.
PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.10 atau lebih baru.
PolarDB for MySQL 5.7 dengan versi revisi 5.7.1.0.7 atau lebih baru.
Untuk membuat indeks kunci primer, kluster PolarDB Anda harus memenuhi salah satu persyaratan versi berikut:
PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.2.9 atau lebih baru.
PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.31 atau lebih baru.
Untuk informasi selengkapnya, lihat Kueri nomor versi.
Catatan penting
Mengaktifkan fitur parallel DDL akan meningkatkan jumlah thread paralel, sehingga mengonsumsi lebih banyak sumber daya perangkat keras seperti CPU, memori, dan I/O, serta berpotensi memengaruhi operasi SQL lain yang sedang berjalan secara bersamaan. Kami menyarankan agar Anda menggunakan fitur ini selama jam sepi atau saat sumber daya perangkat keras mencukupi.
Batasan
Fitur parallel DDL saat ini hanya mendukung operasi DDL untuk membuat indeks kunci primer dan indeks sekunder. Fitur ini tidak mendukung pembuatan indeks teks penuh, indeks spasial, atau indeks sekunder pada kolom virtual.
Informasi latar belakang
Operasi DDL tradisional dirancang untuk prosesor single-core dan hard disk konvensional. Desain ini dapat menyebabkan waktu eksekusi yang lama dan latensi tinggi untuk operasi DDL pada tabel besar. Sebagai contoh, operasi DDL dengan latensi tinggi untuk membuat indeks sekunder dapat memblokir kueri DML berikutnya yang bergantung pada indeks baru tersebut. Perkembangan prosesor multi-core menyediakan dukungan perangkat keras bagi parallel DDL untuk menggunakan lebih banyak thread. Selain itu, penggunaan luas Solid State Disk (SSD) menjadikan latensi akses acak setara dengan latensi akses sekuensial, sehingga penerapan parallel DDL sangat bermanfaat untuk mempercepat pembuatan indeks pada tabel besar.
Cara penggunaan
innodb_polar_parallel_ddl_threads
Anda dapat mengaktifkan fitur parallel DDL dengan mengatur parameter innodb_polar_parallel_ddl_threads:
Parameter
Level
Deskripsi
innodb_polar_parallel_ddl_threads
Session
Mengontrol jumlah thread paralel untuk setiap operasi DDL. Rentang nilai: 1 hingga 16. Nilai default adalah 1, yang menjalankan DDL single-threaded.
Jika nilai parameter ini bukan 1, parallel DDL akan diaktifkan secara otomatis saat Anda membuat indeks sekunder.
CatatanSaat parameter ini diatur ke 1, sistem secara default menggunakan dua thread paralel.
innodb_parallel_build_primary_index
Anda dapat menggunakan parameter innodb_parallel_build_primary_index untuk mengontrol apakah parallel DDL diizinkan saat membuat indeks kunci primer:
CatatanUntuk menggunakan fitur pembuatan indeks kunci primer paralel, buka Quota Center. Temukan kuota dengan Quota ID polardb_mysql_pddl_for_pk, lalu klik Apply pada kolom Actions untuk mengajukan uji coba.
Parameter
Level
Deskripsi
innodb_parallel_build_primary_index
Global
Mengontrol apakah parallel DDL diizinkan saat membuat indeks kunci primer. Nilai yang valid adalah sebagai berikut:
ON: Mengizinkan parallel DDL untuk pembuatan indeks kunci primer.
OFF: Tidak mengizinkan parallel DDL untuk pembuatan indeks kunci primer (default).
innodb_polar_use_sample_sort
Jika parallel DDL saja belum memenuhi kebutuhan performa Anda, Anda dapat menggunakan parameter innodb_polar_use_sample_sort untuk lebih mengoptimalkan proses sorting selama pembuatan indeks.
Parameter
Level
Deskripsi
innodb_polar_use_sample_sort
Session
Sakelar untuk fitur optimasi sample sort. Nilai yang valid adalah sebagai berikut:
ON: Mengaktifkan fitur optimasi sample sort.
OFF: Menonaktifkan fitur optimasi sample sort (default).
innodb_polar_use_parallel_bulk_load
Jika fitur-fitur sebelumnya masih belum memenuhi kebutuhan performa Anda, Anda juga dapat menggunakan parameter innodb_polar_use_parallel_bulk_load untuk lebih mengoptimalkan proses pembuatan struktur pohon indeks.
Parameter
Level
Deskripsi
innodb_polar_use_parallel_bulk_load
Session
Sakelar untuk fitur optimasi parallel bulk load. Nilai yang valid adalah sebagai berikut:
ON: Mengaktifkan fitur optimasi parallel bulk load.
OFF: Menonaktifkan fitur optimasi parallel bulk load (default).
Pengujian performa
Lingkungan pengujian
Kluster PolarDB for MySQL 8.0 Edisi Standar dengan 16 core dan memori 128 GB.
Kluster memiliki storage space 50 TB.
Skema tabel pengujian
Buat tabel bernama
t0menggunakan pernyataan berikut:CREATE TABLE t0( a INT PRIMARY KEY, b INT) ENGINE=InnoDB;Data tabel pengujian
Hasilkan data pengujian menggunakan pernyataan berikut:
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() ;CatatanSaat menjalankan pengujian, ganti
$table_sizedengan jumlah record dalam tabel, misalnya1000000.Pengujian ini menggunakan tabel dengan 1.000.000, 10.000.000, 100.000.000, dan 1.000.000.000 record, serta tabel dengan data sebesar 1 TB.
Tabel pengujian 1 TB dihasilkan menggunakan tool Sysbench. Untuk informasi selengkapnya tentang cara menggunakan tool Sysbench, lihat Tool pengujian.
Metode pengujian
Pengujian ini mengukur peningkatan performa pembuatan indeks sekunder pada bidang
bdengan tipe dataINTuntuk tabel dengan ukuran berbeda. Dalam pengujian ini, parallel DDL diaktifkan, dan parameter innodb_polar_parallel_ddl_threads diatur ke 1, 2, 4, 8, 16, dan 32 untuk memvariasikan jumlah thread paralel.Hasil pengujian
Graf berikut menunjukkan rasio percepatan parallel DDL ketika hanya parameter innodb_polar_parallel_ddl_threads diaktifkan.

Graf berikut menunjukkan rasio percepatan parallel DDL ketika parameter innodb_polar_parallel_ddl_threads dan innodb_polar_use_sample_sort diaktifkan.

Graf berikut menunjukkan rasio percepatan parallel DDL ketika parameter innodb_polar_parallel_ddl_threads, innodb_polar_use_sample_sort, dan innodb_polar_use_parallel_bulk_load diaktifkan.

Hubungi kami
Jika Anda memiliki pertanyaan mengenai operasi DDL, silakan hubungi dukungan teknis.