All Products
Search
Document Center

PolarDB:EXPLAIN DDL

Last Updated:Mar 29, 2026

EXPLAIN DDL memungkinkan Anda melihat pratinjau karakteristik eksekusi pernyataan ALTER TABLE sebelum menjalankannya. Fitur ini menampilkan algoritma yang dipilih oleh mesin, apakah operasi memerlukan pembangunan ulang tabel secara penuh, apakah DML konkuren diizinkan, dan apakah terdapat transaksi yang belum dikomit yang dapat menghambatnya. Gunakan informasi ini untuk menilai dampak terhadap bisnis serta menentukan kapan dan bagaimana menjalankan DDL tersebut.

Versi yang didukung

EXPLAIN DDL tersedia pada:

  • PolarDB for MySQL 8.0.1, versi revisi 8.0.1.1.49 atau lebih baru

  • PolarDB for MySQL 8.0.2, versi revisi 8.0.2.2.27 atau lebih baru

Batasan

  • Hanya didukung untuk tabel yang menggunakan Mesin penyimpanan InnoDB.

  • Tidak mengubah data aktual apa pun.

  • Dapat dijalankan baik pada node primary maupun node read-only. Bidang Possible blocked MDLs hanya menampilkan potensi konflik penguncian pada node saat ini.

Aktifkan EXPLAIN DDL

EXPLAIN DDL diaktifkan secara default. Gunakan parameter berikut untuk mengontrol fitur ini. Untuk petunjuk konfigurasi, lihat Configure cluster and node parameters.

ParameterLevelDescriptionDefault
loose_polar_enable_explain_ddlGlobalMengaktifkan atau menonaktifkan EXPLAIN DDL. Nilai yang valid: ON, OFF.ON
loose_polar_max_collect_thd_num_in_explain_ddlGlobalJumlah maksimum thread pemblokiran MDL potensial yang dikumpulkan. Nilai yang valid: 1–512.16

Sintaksis

{ EXPLAIN | DESCRIBE | DESC } ALTER TABLE ...

Bidang output

Empat bidang secara langsung menentukan dampak terhadap bisnis: Algorithm, Metadata Only, Rebuilt Table, dan Concurrent DML. Gunakan Possible blocked MDLs untuk mendeteksi konflik penguncian aktif sebelum eksekusi.

FieldDescriptionValues
Error NoKode kesalahan. 0 berarti pernyataan berhasil dijalankan.0 (sukses), atau kode kesalahan
AlgorithmAlgoritma yang digunakan oleh mesin. INSTANT paling efisien; COPY paling tidak efisien dan memblokir penulisan.INSTANT, INPLACE, COPY, Unknown
Metadata OnlyApakah operasi hanya memodifikasi metadata, bukan data tabel. Operasi yang hanya memodifikasi metadata selesai dalam hitungan detik terlepas dari ukuran tabel.Yes, No, Unknown
Rebuilt TableApakah operasi memerlukan pembangunan ulang tabel secara penuh. Membangun ulang tabel besar memakan waktu lama.Yes, No, Unknown
Parallel SupportApakah operasi mendukung parallel DDL untuk percepatan.Yes, Yes, But Not Enabled, Not Needed, No, Unknown
Parallel DegreeJumlah thread yang digunakan oleh operasi DDL. -1 berarti tidak diketahui.-1 (tidak diketahui), 1128
Concurrent DMLApakah operasi baca dan tulis diizinkan selama eksekusi DDL.Yes, No, Unknown
Possible blocked MDLsID proses koneksi dengan transaksi yang belum dikomit yang dapat menghambat DDL.Daftar ID proses yang dipisahkan koma, atau kosong
Error MsgPesan kesalahan yang sesuai dengan Error No.Sebuah string
Suggest InfoSaran optimasi, seperti mengaktifkan parallel DDL atau menyelesaikan konflik penguncian.Sebuah string
StatementPernyataan DDL yang sedang dijelaskan.Sebuah pernyataan DDL

Peringkat efisiensi algoritma

Ketiga algoritma membentuk hierarki efisiensi. EXPLAIN DDL melaporkan algoritma yang benar-benar dipilih oleh mesin — yaitu yang paling efisien yang didukung oleh operasi tersebut:

AlgorithmTable rebuildConcurrent DMLEfficiency
INSTANTNoYesTertinggi — selesai dalam hitungan detik
INPLACEBergantung pada operasiYesSedang — bisa memakan waktu beberapa menit untuk tabel besar
COPYYesNoTerendah — memblokir penulisan; hindari selama jam sibuk

Referensi operasi

Gunakan tabel ini untuk memperkirakan dampak terhadap bisnis sebelum menjalankan EXPLAIN DDL pada operasi tertentu. Tabel ini mencerminkan perilaku umum; gunakan EXPLAIN DDL untuk mengonfirmasi hasil aktual di lingkungan Anda.

OperationAlgorithmMetadata onlyTable rebuildConcurrent DMLTypical impact
Add a columnINSTANTYesNoYesSelesai dalam hitungan detik; dampak minimal
Rename a tableINPLACEYesNoYesSelesai dengan cepat; dampak minimal
Add a secondary indexINPLACENoNoYesWaktu tergantung pada ukuran tabel; dampak rendah
Rebuild a tableINPLACENoYesYesMengonsumsi sumber daya signifikan; jadwalkan selama jam sepi
Modify a column typeCOPYNoYesNoMemblokir penulisan; jadwalkan selama jam sepi

Contoh

Periksa karakteristik eksekusi

Contoh berikut menunjukkan cara menggunakan EXPLAIN DDL untuk menilai apakah operasi DDL memengaruhi ketersediaan bisnis.

Semua contoh menggunakan tabel uji yang sama:

SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL,
  `b` char(1) DEFAULT NULL,
  `c` char(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

Add a column

EXPLAIN ALTER TABLE t1 ADD COLUMN d INT;
*************************** 1. row ***************************
             Error No: 0
            Algorithm: INSTANT
        Metadata Only: Yes
        Rebuilt table: No
     Parallel Support: Not Need
      Parallel Degree: 1
       Concurrent DML: Yes
Possible blocked MDLs:
            Error Msg:
         Suggest Info:
            Statement: EXPLAIN ALTER TABLE t1 ADD COLUMN d int
1 row in set (0.00 sec)

Algoritma INSTANT hanya memodifikasi metadata tanpa membangun ulang tabel dan mengizinkan DML konkuren. Operasi ini selesai dalam hitungan detik dengan dampak bisnis minimal.

Rename a table

EXPLAIN ALTER TABLE t1 rename t1_rn;
*************************** 1. row ***************************
             Error No: 0
            Algorithm: INPLACE
        Metadata Only: Yes
        Rebuilt table: No
     Parallel Support: Not Need
      Parallel Degree: 1
       Concurrent DML: Yes
Possible blocked MDLs:
            Error Msg:
         Suggest Info:
            Statement: EXPLAIN ALTER TABLE t1 rename t1_rn
1 row in set (0.01 sec)

Algoritma INPLACE hanya memodifikasi metadata tanpa membangun ulang tabel dan mengizinkan DML konkuren. Operasi ini memiliki dampak bisnis minimal.

Modify a column type

EXPLAIN ALTER TABLE t1 modify COLUMN a char(1);
*************************** 1. row ***************************
             Error No: 0
            Algorithm: COPY
        Metadata Only: No
        Rebuilt table: Yes
     Parallel Support: No
      Parallel Degree: 1
       Concurrent DML: No
Possible blocked MDLs:
            Error Msg:
         Suggest Info:
            Statement: EXPLAIN ALTER TABLE t1 modify COLUMN a char(1)
1 row in set (0.01 sec)

Algoritma COPY memerlukan pembangunan ulang tabel secara penuh dan memblokir DML konkuren. Operasi ini memiliki dampak bisnis signifikan — jadwalkan selama jam sepi.

Rebuild a table

EXPLAIN ALTER TABLE t1 engine= innodb;
*************************** 1. row ***************************
             Error No: 0
            Algorithm: INPLACE
        Metadata Only: No
        Rebuilt table: Yes
     Parallel Support: Yes But Not Enable
      Parallel Degree: 1
       Concurrent DML: Yes
Possible blocked MDLs:
            Error Msg:
         Suggest Info: 1. This DDL operation could use Parallel DDL to speed up.
            Statement: EXPLAIN ALTER TABLE t1 engine= innodb

Algoritma INPLACE memerlukan pembangunan ulang tabel secara penuh tetapi mengizinkan DML konkuren. Meskipun operasi ini tidak memblokir baca atau tulis, pembangunan ulang tabel besar mengonsumsi sumber daya signifikan — jadwalkan selama jam sepi.

Bidang Suggest Info menunjukkan bahwa parallel DDL dapat mempercepat operasi ini. Lihat Check parallel DDL support untuk detailnya.

Periksa dukungan parallel DDL

PolarDB for MySQL mendukung parallel DDL untuk mempercepat operasi DDL. Gunakan bidang Parallel Support dan Parallel Degree untuk menentukan apakah suatu operasi tertentu dapat memperoleh manfaat dari parallel DDL.

  • Jika Parallel Support bernilai Yes, But Not Enabled, operasi tersebut mendukung parallel DDL tetapi fitur tersebut belum diaktifkan pada kluster. Bidang Suggest Info menampilkan: This DDL operation could use Parallel DDL to speed up. Untuk mengaktifkan parallel DDL, lihat Parallel DDL.

  • Jika Parallel Support bernilai Yes, fitur tersebut telah diaktifkan dan sedang digunakan. EXPLAIN DDL juga merekomendasikan tingkat paralelisme optimal berdasarkan beban kerja kluster saat ini. Bidang Suggest Info menampilkan: This DDL operation can be accelerated by increasing the value of 'innodb_polar_parallel_ddl_threads'. The recommended value is 8. Sesuaikan nilai innodb_polar_parallel_ddl_threads sesuai rekomendasi untuk meningkatkan kinerja.

Contoh: parallel DDL dinonaktifkan

Periksa apakah parallel DDL diaktifkan:

MySQL [test]> SHOW variables LIKE "%parallel_ddl_threads%";
+----------------------------------------------------+-------+
| Variable_name                                      | Value |
+----------------------------------------------------+-------+
| innodb_polar_innovate_default_parallel_ddl_threads | 1     |
| innodb_polar_parallel_ddl_threads                  | 1     |
+----------------------------------------------------+-------+
2 rows in set (0.03 sec)

Parallel DDL belum diaktifkan. Jalankan EXPLAIN untuk operasi penambahan indeks sekunder:

EXPLAIN ALTER TABLE t1 ADD index k_a(a);
*************************** 1. row ***************************
             Error No: 0
            Algorithm: INPLACE
        Metadata Only: No
        Rebuilt table: No
     Parallel Support: Yes But Not Enable
      Parallel Degree: 1
       Concurrent DML: Yes
Possible blocked MDLs:
            Error Msg:
         Suggest Info: 1. This DDL operation could use Parallel DDL to speed up.
            Statement: EXPLAIN ALTER TABLE t1 ADD index k_a(a)
1 row in set (0.01 sec)

Parallel Support: Yes But Not Enabled berarti operasi tersebut dapat menggunakan parallel DDL, tetapi fitur tersebut tidak aktif. Aktifkan parallel DDL untuk mempercepatnya.

Contoh: parallel DDL diaktifkan

Atur tingkat paralelisme menjadi 2:

MySQL [test]> SET innodb_polar_parallel_ddl_threads = 2;
Query OK, 0 rows affected (0.00 sec)

Jalankan EXPLAIN untuk operasi penambahan indeks sekunder yang sama:

EXPLAIN ALTER TABLE t1 ADD index k_a(a);
*************************** 1. row ***************************
             Error No: 0
            Algorithm: INPLACE
        Metadata Only: No
        Rebuilt table: No
     Parallel Support: Yes
      Parallel Degree: 2
       Concurrent DML: Yes
Possible blocked MDLs:
            Error Msg:
         Suggest Info: 1. This DDL operation can be accelerated by increasing the value of 'innodb_polar_parallel_ddl_threads'. The recommended value is 8.
            Statement: explain ALTER TABLE t1 ADD index k_a(a)
1 row in set (0.01 sec)

Parallel Support: Yes dan Parallel Degree: 2 mengonfirmasi bahwa operasi tersebut menggunakan dua thread paralel. Karena beban kerja kluster saat ini rendah, Suggest Info merekomendasikan peningkatan tingkat paralelisme menjadi 8 untuk kinerja yang lebih baik.

Deteksi pemblokiran MDL

Operasi DDL pada sebuah tabel dapat diblokir oleh transaksi yang belum dikomit yang memegang Metadata Lock (MDL) pada tabel yang sama. Dalam kasus ekstrem, blokir MDL yang tidak terdeteksi dapat menyebabkan penumpukan koneksi aktif dan ketidakstabilan kluster. Gunakan bidang Possible blocked MDLs untuk mengidentifikasi koneksi yang memblokir sebelum menjalankan DDL.

Jika terdapat pemblokiran, Possible blocked MDLs mencantumkan ID proses koneksi dengan transaksi yang belum dikomit. Hentikan koneksi tersebut dengan KILL atau KILL QUERY untuk membuka blokir DDL.

Contoh: mendeteksi blokir MDL

Pada koneksi 1, mulai transaksi pada t1 tanpa melakukan commit:

MySQL [test]> begin;
Query OK, 0 rows affected (0.00 sec)

MySQL [test]> select * from t1;
Empty set (0.00 sec)

Pada koneksi 2, jalankan EXPLAIN DDL pada t1:

EXPLAIN ALTER TABLE t1 engine= innodb;
*************************** 1. row ***************************
             Error No: 0
            Algorithm: INPLACE
        Metadata Only: No
        Rebuilt table: Yes
     Parallel Support: Yes But Not Enable
      Parallel Degree: 1
       Concurrent DML: Yes
Possible blocked MDLs: 18
            Error Msg:
         Suggest Info: 1. This DDL operation may be blocked by the threads listed under 'Possible blocked MDLs'.
2. This DDL operation could use Parallel DDL to speed up.
            Statement: EXPLAIN ALTER TABLE t1 engine= innodb

Possible blocked MDLs: 18 mengidentifikasi bahwa koneksi 18 memiliki transaksi yang belum dikomit yang akan menghambat DDL ini. Jalankan KILL 18 atau KILL QUERY 18 untuk menghentikannya sebelum melanjutkan.

Langkah selanjutnya