All Products
Search
Document Center

PolarDB:Panduan operasi DDL untuk PolarDB for MySQL

Last Updated:Aug 08, 2026

Topik ini didasarkan pada database cloud-native PolarDB for MySQL dan menjelaskan operasi DDL umum untuk membantu Anda memahami perilaku DDL, mengevaluasi risiko operasional, serta mengurangi dampak terhadap beban kerja.

Ikhtisar operasi DDL

Dalam ekosistem MySQL, DDL merupakan kategori operasi yang sangat kompleks, mencakup operasi indeks, kunci primer, kolom, tabel, kunci asing, kolom terhitung (generated column), dan berbagai jenis lainnya. Operasi DDL tidak hanya memakan waktu dan intensif sumber daya, tetapi juga melibatkan penguncian tabel. Operasi yang tidak tepat dapat mengganggu beban kerja normal dan menyebabkan dampak serius.

PolarDB for MySQL memiliki modul DDL yang telah mencapai kemajuan signifikan dalam stabilitas kinerja dan penguncian berkat akumulasi pengalaman bertahun-tahun serta iterasi fitur berkelanjutan. Topik ini menjelaskan karakteristik perilaku operasi DDL umum di setiap versi PolarDB for MySQL dari aspek-aspek berikut:

  • Apakah tabel dikunci (DML konkuren diperbolehkan): DDL tanpa penguncian (Online DDL) hanya meminta mutex lock pada tabel saat memodifikasi metadata (umumnya berlangsung kurang dari 1 detik). Pembacaan dan penulisan pada tabel target tetap diperbolehkan selama perubahan skema, sehingga meningkatkan responsivitas dan ketersediaan di lingkungan produksi. Sebaliknya, pernyataan yang tidak mendukung Online DDL akan mengunci tabel sepanjang durasi eksekusi dan tidak mendukung penulisan konkuren. Jika operasi DDL semacam ini berlangsung lama, dampaknya terhadap operasi bisnis bisa signifikan.

  • Apakah tabel dibangun ulang (durasi): DDL semacam ini perlu membuat ulang kunci primer dan semua indeks sekunder sesuai skema tabel baru, sehingga biasanya memakan waktu lama.

    Catatan

    Karena PolarDB for MySQL mendukung fitur parallel DDL, kinerjanya jauh lebih baik dibandingkan alat pihak ketiga seperti gh-ost atau pt-osc.

  • Apakah hanya metadata yang dimodifikasi (selesai dalam hitungan detik): Hanya metadata yang dimodifikasi tanpa perubahan pada data tabel. Waktu eksekusi operasi DDL semacam ini tidak bergantung pada ukuran tabel dan umumnya selesai dalam hitungan detik.

  • Apakah parallel DDL didukung (akselerasi multi-thread): Untuk skenario seperti membuat indeks atau membangun ulang tabel pada tabel besar, PolarDB mendukung parallel DDL yang menggunakan multi-threading untuk meningkatkan efisiensi eksekusi DDL hingga 15–20 kali lipat. Untuk informasi selengkapnya, lihat Parallel DDL.

  • Apakah kinerja terpengaruh (perubahan tanpa penguncian): Lakukan perubahan skema tanpa penguncian menggunakan tiket perubahan tanpa penguncian tidak menyebabkan gangguan layanan dan tidak memengaruhi beban kerja selama jam sepi.

    Catatan

    Kami merekomendasikan agar Anda melakukan operasi ini selama jam sepi karena dapat meningkatkan penggunaan IOPS dan CPU.

Algoritma eksekusi DDL

PolarDB for MySQL mendukung tiga algoritma eksekusi DDL berikut:

  • Algoritma INSTANT: Saat algoritma INSTANT digunakan, hanya metadata dalam kamus data yang dimodifikasi. Data yang sudah ada tidak perlu diubah atau disalin, dan tabel tidak perlu dibangun ulang. Oleh karena itu, prosesnya tidak dipengaruhi oleh ukuran tabel dan seluruh operasi DDL dapat selesai dalam hitungan detik.

  • Algoritma INPLACE: Saat algoritma INPLACE digunakan, penyalinan dan pembangunan ulang data dalam tabel diselesaikan di dalam engine, sehingga eksekusi lebih cepat. Sebagian besar operasi DDL dengan algoritma INPLACE memperbolehkan pembacaan dan penulisan konkuren serta memiliki dampak minimal terhadap beban kerja. Beberapa operasi DDL seperti RENAME TABLE dan ADD COMMENT hanya memodifikasi metadata tanpa mengubah data tabel dan selesai dalam hitungan detik.

  • Algoritma COPY: Saat algoritma COPY digunakan, semua data dalam tabel harus disalin ke tabel baru. Selama penyalinan data, kunci SNW (SHARED_NO_WRITE) dipegang pada tabel asli, sehingga hanya operasi baca yang didukung dan penulisan konkuren tidak diperbolehkan selama eksekusi DDL—berdampak signifikan terhadap beban kerja.

Operasi DDL yang memperbolehkan pembacaan dan penulisan konkuren secara kolektif disebut Online DDL, yang memiliki dampak relatif kecil terhadap beban kerja. Dalam kebanyakan kasus, Anda tidak perlu menentukan algoritma secara manual karena PolarDB secara otomatis memilih algoritma optimal dalam urutan prioritas: INSTANT, INPLACE, lalu COPY. Namun, Anda dapat menggunakan klausa ALGORITHM dan LOCK pada pernyataan ALTER TABLE untuk menyesuaikan perilaku operasi DDL:

  • Klausa ALGORITHM: Untuk menjalankan pernyataan DDL dengan algoritma tertentu, tentukan nilai ALGORITHM. Nilai yang valid adalah DEFAULT, INSTANT, INPLACE, dan COPY. Jika operasi DDL tidak mendukung algoritma yang ditentukan, kesalahan akan dikembalikan segera.

  • Klausa LOCK: Klausa LOCK digunakan untuk mengatur akses konkuren ke tabel selama eksekusi DDL. Opsi yang tersedia beserta maknanya adalah sebagai berikut:

    • DEFAULT: Kernel memperbolehkan tingkat maksimum pembacaan dan penulisan konkuren berdasarkan jenis DDL.

    • NONE: Pembacaan dan penulisan konkuren diperbolehkan selama eksekusi DDL. Kesalahan dikembalikan jika tidak didukung.

    • SHARED: Pembacaan konkuren diperbolehkan, tetapi penulisan diblokir. Kesalahan dikembalikan jika pembacaan konkuren tidak didukung.

    • EXCLUSIVE: Semua pembacaan dan penulisan konkuren dilarang selama eksekusi DDL.

Untuk mencegah tabel menjadi tidak dapat diakses saat mengeksekusi ALTER TABLE, Anda dapat menentukan klausa LOCK dalam pernyataan tersebut. Jika perilaku penguncian selama eksekusi DDL tidak memenuhi kondisi yang ditentukan, operasi akan segera dihentikan.

Pratinjau karakteristik eksekusi DDL dengan EXPLAIN DDL

Topik ini mencantumkan karakteristik eksekusi operasi DDL umum. Namun, karena PolarDB menyediakan banyak fitur, perilaku eksekusi DDL aktual dapat dipengaruhi oleh berbagai faktor seperti struktur tabel target, pengaturan parameter instans, dan status fitur tertentu.

Untuk meningkatkan keamanan dan prediktabilitas perubahan skema, kami sangat merekomendasikan penggunaan fitur EXPLAIN DDL guna memahami karakteristik eksekusi operasi DDL sebelum menjalankan operasi kompleks.

Anda dapat menggunakan sintaks berikut untuk melihat karakteristik eksekusi operasi DDL:

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

Dengan EXPLAIN DDL, Anda dapat memperoleh informasi kunci berikut:

  • Apakah operasi DDL dapat dieksekusi dengan sukses.

  • Jenis algoritma yang digunakan: INSTANT, INPLACE, atau COPY.

  • Apakah operasi DDL perlu membangun ulang seluruh data tabel—proses yang biasanya memakan waktu lama.

  • Apakah operasi DML konkuren diperbolehkan selama eksekusi DDL.

  • Apakah operasi DDL akan diblokir oleh transaksi yang belum dikomit.

  • Apakah operasi DDL mendukung akselerasi parallel DDL. Jika didukung, tingkat paralelisme akan ditampilkan.

Dengan memahami informasi ini terlebih dahulu, Anda dapat menilai dampak operasi DDL secara lebih akurat, memilih waktu eksekusi yang tepat, serta menghindari masalah seperti penguncian tabel dan waktu eksekusi lama yang memengaruhi beban kerja online. Untuk informasi selengkapnya, lihat EXPLAIN DDL.

Karakteristik perilaku DDL

Operasi indeks

PolarDB for MySQL 8.0.2

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Membuat indeks sekunder

Ya

Tidak

Tidak

Didukung

Menghapus indeks sekunder

Ya

Tidak

Ya

N/A

Mengganti nama indeks sekunder

Ya

Tidak

Ya

N/A

Menambahkan indeks FULLTEXT

Tidak

Tidak

Catatan

Saat Anda menambahkan indeks teks penuh pertama ke tabel, pembangunan ulang tabel tambahan dipicu jika tidak ada kolom FTS_DOC_ID yang ditentukan pengguna.

Tidak

Tidak didukung

Menambahkan indeks SPATIAL

Tidak

Tidak

Tidak

Tidak didukung

PolarDB for MySQL 8.0.1

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Membuat indeks sekunder

Ya

Tidak

Tidak

Didukung

Menghapus indeks sekunder

Ya

Tidak

Ya

N/A

Mengganti nama indeks sekunder

Ya

Tidak

Ya

N/A

Menambahkan indeks FULLTEXT

Tidak

Tidak

Catatan

Saat Anda menambahkan indeks teks penuh pertama ke tabel, pembangunan ulang tabel tambahan dipicu jika tidak ada kolom FTS_DOC_ID yang ditentukan pengguna.

Tidak

Tidak didukung

Menambahkan indeks SPATIAL

Tidak

Tidak

Tidak

Tidak didukung

PolarDB for MySQL 5.7

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Membuat indeks sekunder

Ya

Tidak

Tidak

Didukung

Menghapus indeks sekunder

Ya

Tidak

Ya

N/A

Mengganti nama indeks sekunder

Ya

Tidak

Ya

N/A

Menambahkan indeks FULLTEXT

Tidak

Tidak

Catatan

Saat Anda menambahkan indeks teks penuh pertama ke tabel, pembangunan ulang tabel tambahan dipicu jika tidak ada kolom FTS_DOC_ID yang ditentukan pengguna.

Tidak

Tidak didukung

Menambahkan indeks SPATIAL

Tidak

Tidak

Tidak

Tidak didukung

PolarDB for MySQL 5.6

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Membuat indeks sekunder

Ya

Tidak

Tidak

Tidak didukung

Menghapus indeks sekunder

Ya

Tidak

Ya

N/A

Menambahkan indeks FULLTEXT

Tidak

Tidak

Catatan

Saat Anda menambahkan indeks teks penuh pertama ke tabel, pembangunan ulang tabel tambahan dipicu jika tidak ada kolom FTS_DOC_ID yang ditentukan pengguna.

Tidak

Tidak didukung

Menambahkan indeks SPATIAL

Tidak

Tidak

Tidak

Tidak didukung

Operasi kunci primer

PolarDB for MySQL 8.0.2

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kunci primer

Ya

Ya

Tidak

Didukung

Menghapus kunci primer

Tidak

Ya

Tidak

Tidak didukung

Menghapus kunci primer yang ada dan menambahkan kunci primer baru

Ya

Ya

Tidak

Didukung

PolarDB for MySQL 8.0.1

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kunci primer

Ya

Ya

Tidak

Didukung

Menghapus kunci primer

Tidak

Ya

Tidak

Tidak didukung

Menghapus kunci primer yang ada dan menambahkan kunci primer baru

Ya

Ya

Tidak

Didukung

PolarDB for MySQL 5.7

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kunci primer

Ya

Ya

Tidak

Didukung

Menghapus kunci primer

Tidak

Ya

Tidak

Tidak didukung

Menghapus kunci primer yang ada dan menambahkan kunci primer baru

Ya

Ya

Tidak

Didukung

PolarDB for MySQL 5.6

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kunci primer

Ya

Ya

Tidak

Tidak didukung

Menghapus kunci primer

Tidak

Ya

Tidak

Tidak didukung

Menghapus kunci primer yang ada dan menambahkan kunci primer baru

Ya

Ya

Tidak

Tidak didukung

Catatan

Dalam skenario berikut, DML konkuren hanya diperbolehkan jika parameter kluster sql_mode berisi STRICT_TRANS_TABLES atau STRICT_ALL_TABLES:

  • Menambahkan kunci primer

  • Menghapus kunci primer yang ada dan menambahkan kunci primer baru

Operasi kolom

PolarDB for MySQL 8.0.2

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kolom

Ya

No.1

Ya1

Didukung1

Menghapus kolom

Ya

Ya

Tidak

Didukung

Mengganti nama kolom

Ya

Tidak

Ya

N/A

Mengatur ulang urutan kolom

Ya

Ya

Tidak

Didukung

Menetapkan nilai default kolom

Ya

Tidak

Ya

N/A

Mengubah komentar kolom

Ya

Tidak

Ya

N/A

Mengubah tipe kolom

Tidak

Ya

Tidak

Tidak didukung

Memperpanjang panjang kolom VARCHAR

Ya2

Tidak

Ya

N/A

Mengubah set karakter dari UTF8mb3 ke UTF8mb4

Tidak

No3

Ya3

Tidak didukung

Menghapus nilai default kolom

Ya

Tidak

Ya

N/A

Mengubah nilai auto-increment

Ya

Tidak

Ya

N/A

Mengubah kolom menjadi NULL

Ya

Ya

Tidak

Didukung

Mengubah kolom menjadi NOT NULL

Tidak

Ya

Tidak

Tidak didukung

Memodifikasi definisi kolom ENUM/SET

Ya

Tidak

Ya4

N/A

  1. Fitur Penambahan kolom instan di akhir tabel hanya mendukung penambahan kolom di akhir tabel. Jika tabel tidak memiliki kunci primer eksplisit, atur parameter implicit_primary_key ke OFF untuk mencegah kegagalan operasi akibat adanya kolom kunci primer implisit di akhir tabel. Penambahan kolom instan tidak didukung pada tabel terkompresi (ROW_FORMAT=COMPRESSED), tabel dengan indeks teks penuh, atau tabel temporary. Jika kluster tidak mendukung fitur ini, penambahan kolom akan menggunakan algoritma INPLACE yang memerlukan pembangunan ulang tabel penuh. Pembacaan dan penulisan konkuren tetap diperbolehkan selama proses tersebut, dan Anda dapat mempercepatnya dengan fitur parallel DDL.

  2. Saat memperpanjang panjang kolom VARCHAR, jumlah byte yang diperlukan untuk menyimpan panjang kolom harus tetap konsisten agar ekstensi kolom cepat didukung. Secara spesifik, kolom VARCHAR berukuran 0–255 byte hanya memerlukan satu byte untuk menyimpan panjangnya, sedangkan kolom berukuran 256 byte atau lebih memerlukan dua byte. Hanya jika ekstensi panjang VARCHAR tetap dalam rentang byte yang sama—misalnya 0–255 byte atau ≥256 byte—eksekusi ALTER TABLE hanya akan memodifikasi metadata. Artinya, saat memperpanjang panjang kolom VARCHAR dari kurang dari 256 byte menjadi 256 byte atau lebih, PolarDB secara default menggunakan DDL Copy yang mengunci tabel sepanjang durasi; hanya operasi baca yang diperbolehkan, sedangkan penulisan DML tidak didukung.

    Jika Anda tidak yakin apakah rentang modifikasi VARCHAR memenuhi kondisi tersebut, gunakan ALGORITHM=INPLACE untuk menentukan algoritma INPLACE. Jika ekstensi kolom cepat tidak didukung, kesalahan akan dilaporkan langsung. Contoh:

    ALTER TABLE table_name ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(256);
    
    ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

    VARCHAR merupakan tipe penyimpanan panjang variabel, dan disk hanya menyimpan panjang aktualnya. Oleh karena itu, saat menggunakan field VARCHAR, kami merekomendasikan agar Anda langsung menetapkan panjang maksimum ke 256 byte atau lebih untuk menghindari kemungkinan penggunaan algoritma COPY saat memperpanjang field.

  3. Jika kondisi berikut terpenuhi, mengubah set karakter kolom dari UTF8mb3 ke UTF8mb4 hanya memodifikasi metadata tanpa mengubah data. Jika tidak, algoritma COPY diperlukan untuk membangun ulang tabel, dan tabel dikunci sepanjang durasi pembangunan ulang—hanya operasi baca yang diperbolehkan:

    • Tipe kolom adalah CHAR, VARCHAR, ENUM, atau TEXT.

    • Tidak ada indeks pada kolom yang dimodifikasi.

    • Panjang penyimpanan maksimum kolom kurang dari 256 byte atau lebih dari 255 byte baik sebelum maupun sesudah konversi set karakter.

    Anda dapat menentukan ALGORITHM=INPLACE untuk memaksa DDL berjalan tanpa membangun ulang tabel. Jika operasi memerlukan algoritma COPY, kesalahan akan dikembalikan segera. Contoh:

    ALTER TABLE test modify column b char(1) CHARACTER SET utf8mb4 default null,algorithm = inplace;
    ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.
  4. Hanya jika ukuran penyimpanan tipe data tidak berubah dan elemen ditambahkan di akhir ENUM atau SET, operasi hanya memodifikasi metadata tanpa membangun ulang seluruh tabel. Jika tidak, algoritma COPY diperlukan untuk membangun ulang tabel.

PolarDB for MySQL 8.0.1

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kolom

Ya

No1

Ya1

Didukung1

Menghapus kolom

Ya

Ya

Tidak

Didukung

Mengganti nama kolom

Ya

Tidak

Ya

N/A

Mengatur ulang urutan kolom

Ya

Ya

Tidak

Didukung

Menetapkan nilai default kolom

Ya

Tidak

Ya

N/A

Mengubah komentar kolom

Ya

Tidak

Ya

N/A

Mengubah tipe kolom

Tidak

Ya

Tidak

Tidak didukung

Memperpanjang panjang kolom VARCHAR

Ya2

Tidak

Ya

N/A

Mengubah set karakter dari UTF8mb3 ke UTF8mb4

Tidak

No3

Ya3

Tidak didukung

Menghapus nilai default kolom

Ya

Tidak

Ya

N/A

Mengubah nilai auto-increment

Ya

Tidak

Ya

N/A

Mengubah kolom menjadi NULL

Ya

Ya

Tidak

Didukung

Mengubah kolom menjadi NOT NULL

Tidak

Ya

Tidak

Tidak didukung

Memodifikasi definisi kolom ENUM/SET

Ya

Tidak

Ya4

N/A

  1. Fitur Penambahan kolom instan di akhir tabel hanya mendukung penambahan kolom di akhir tabel. Jika tabel tidak memiliki kunci primer eksplisit, atur parameter implicit_primary_key ke OFF untuk mencegah kegagalan operasi akibat adanya kolom kunci primer implisit di akhir tabel. Penambahan kolom instan tidak didukung pada tabel terkompresi (ROW_FORMAT=COMPRESSED), tabel dengan indeks teks penuh, atau tabel temporary. Jika kluster tidak mendukung fitur ini, penambahan kolom akan menggunakan algoritma INPLACE yang memerlukan pembangunan ulang tabel penuh. Pembacaan dan penulisan konkuren tetap diperbolehkan selama proses tersebut, dan Anda dapat mempercepatnya dengan fitur parallel DDL.

    Selain itu, jika tabel Anda memiliki Indeks Kolom dalam Memori (IMCI), penambahan kolom instan tidak didukung karena memerlukan pembangunan ulang IMCI. Anda dapat mengatur parameter loose_imci_enable_add_column_instant_ddl ke ON untuk mengaktifkan penambahan kolom instan. Dalam hal ini, PolarDB membangun ulang IMCI secara asinkron di latar belakang. IMCI tidak tersedia sementara selama pembangunan ulang. Untuk informasi selengkapnya, lihat Jalankan pernyataan DDL untuk membuat dan menghapus IMCI secara dinamis.

  2. Saat memperpanjang panjang kolom VARCHAR, jumlah byte yang diperlukan untuk menyimpan panjang kolom harus tetap konsisten agar ekstensi kolom cepat didukung. Secara spesifik, kolom VARCHAR berukuran 0–255 byte hanya memerlukan satu byte untuk menyimpan panjangnya, sedangkan kolom berukuran 256 byte atau lebih memerlukan dua byte. Hanya jika ekstensi panjang VARCHAR tetap dalam rentang byte yang sama—misalnya 0–255 byte atau ≥256 byte—eksekusi ALTER TABLE hanya akan memodifikasi metadata. Artinya, saat memperpanjang panjang kolom VARCHAR dari kurang dari 256 byte menjadi 256 byte atau lebih, PolarDB secara default menggunakan DDL Copy yang mengunci tabel sepanjang durasi; hanya operasi baca yang diperbolehkan, sedangkan penulisan DML tidak didukung.

    Jika Anda tidak yakin apakah rentang modifikasi VARCHAR memenuhi kondisi tersebut, gunakan ALGORITHM=INPLACE untuk menentukan algoritma INPLACE. Jika ekstensi kolom cepat tidak didukung, kesalahan akan dilaporkan langsung. Contoh:

    ALTER TABLE table_name ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(256);
    
    ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

    VARCHAR merupakan tipe penyimpanan panjang variabel, dan disk hanya menyimpan panjang aktualnya. Oleh karena itu, saat menggunakan field VARCHAR, kami merekomendasikan agar Anda langsung menetapkan panjang maksimum ke 256 byte atau lebih untuk menghindari kemungkinan penggunaan algoritma COPY saat memperpanjang field.

  3. Jika parameter loose_innodb_support_instant_modify_charset diatur ke ON dan kondisi berikut terpenuhi, mengubah set karakter kolom dari UTF8mb3 ke UTF8mb4 hanya memodifikasi metadata tanpa mengubah data. Jika tidak, algoritma COPY diperlukan untuk membangun ulang tabel, dan tabel dikunci sepanjang durasi pembangunan ulang—hanya operasi baca yang diperbolehkan:

    • Tipe kolom adalah CHAR, VARCHAR, ENUM, atau TEXT.

    • Tidak ada indeks pada kolom yang dimodifikasi.

    • Panjang penyimpanan maksimum kolom kurang dari 256 byte atau lebih dari 255 byte baik sebelum maupun sesudah konversi set karakter.

    Anda dapat menentukan ALGORITHM=INPLACE untuk memaksa DDL berjalan tanpa membangun ulang tabel. Jika operasi memerlukan algoritma COPY, kesalahan akan dikembalikan segera. Contoh:

    ALTER TABLE test modify column b char(1) CHARACTER SET utf8mb4 default null,algorithm = inplace;
    ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.
  4. Hanya jika ukuran penyimpanan tipe data tidak berubah dan elemen ditambahkan di akhir ENUM atau SET, operasi hanya memodifikasi metadata tanpa membangun ulang seluruh tabel. Jika tidak, algoritma COPY diperlukan untuk membangun ulang tabel.

PolarDB for MySQL 5.7

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kolom

Ya

Tidak1

Ya1

Didukung1

Menghapus kolom

Ya

Ya

Tidak

Didukung

Mengganti nama kolom

Ya

Tidak

Ya

N/A

Mengatur ulang urutan kolom

Ya

Ya

Tidak

Didukung

Menetapkan nilai default kolom

Ya

Tidak

Ya

N/A

Mengubah komentar kolom

Ya

Tidak

Ya

N/A

Mengubah tipe kolom

Tidak

Ya

Tidak

Tidak didukung

Memperpanjang panjang kolom VARCHAR

Ya2

Tidak

Ya

N/A

Mengubah set karakter dari UTF8mb3 ke UTF8mb4

Tidak

Ya

Tidak

Tidak didukung

Menghapus nilai default kolom

Ya

Tidak

Ya

N/A

Mengubah nilai auto-increment

Ya

Tidak

Ya

N/A

Mengubah kolom menjadi NULL

Ya

Ya

Tidak

Didukung

Mengubah kolom menjadi NOT NULL

Tidak

Ya

Tidak

Tidak didukung

Memodifikasi definisi kolom ENUM/SET

Ya

Tidak

Ya3

N/A

  1. Untuk mengaktifkan fitur Penambahan kolom instan di akhir tabel, atur parameter loose_innodb_support_instant_add_column ke ON. Fitur ini hanya mendukung penambahan kolom di akhir tabel. Jika tabel tidak memiliki kunci primer eksplisit, atur parameter implicit_primary_key ke OFF untuk mencegah kegagalan operasi akibat adanya kolom kunci primer implisit di akhir tabel. Penambahan kolom instan tidak didukung pada tabel terkompresi (ROW_FORMAT=COMPRESSED), tabel dengan indeks teks penuh, atau tabel temporary. Jika kluster tidak mendukung fitur ini, penambahan kolom akan menggunakan algoritma INPLACE yang memerlukan pembangunan ulang tabel penuh. Pembacaan dan penulisan konkuren tetap diperbolehkan selama proses tersebut, dan Anda dapat mempercepatnya dengan fitur parallel DDL.

  2. Saat memperpanjang panjang kolom VARCHAR, jumlah byte yang diperlukan untuk menyimpan panjang kolom harus tetap konsisten agar ekstensi kolom cepat didukung. Secara spesifik, kolom VARCHAR berukuran 0–255 byte hanya memerlukan satu byte untuk menyimpan panjangnya, sedangkan kolom berukuran 256 byte atau lebih memerlukan dua byte. Hanya jika ekstensi panjang VARCHAR tetap dalam rentang byte yang sama—misalnya 0–255 byte atau ≥256 byte—eksekusi ALTER TABLE hanya akan memodifikasi metadata. Artinya, saat memperpanjang panjang kolom VARCHAR dari kurang dari 256 byte menjadi 256 byte atau lebih, PolarDB secara default menggunakan DDL Copy yang mengunci tabel sepanjang durasi; hanya operasi baca yang diperbolehkan, sedangkan penulisan DML tidak didukung.

    Jika Anda tidak yakin apakah rentang modifikasi VARCHAR memenuhi kondisi tersebut, gunakan ALGORITHM=INPLACE untuk menentukan algoritma INPLACE. Jika ekstensi kolom cepat tidak didukung, kesalahan akan dilaporkan langsung. Contoh:

    ALTER TABLE table_name ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(256);
    
    ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

    VARCHAR merupakan tipe penyimpanan panjang variabel, dan disk hanya menyimpan panjang aktualnya. Oleh karena itu, saat menggunakan field VARCHAR, kami merekomendasikan agar Anda langsung menetapkan panjang maksimum ke 256 byte atau lebih untuk menghindari kemungkinan penggunaan algoritma COPY saat memperpanjang field.

  3. Hanya jika ukuran penyimpanan tipe data tidak berubah dan elemen ditambahkan di akhir ENUM atau SET, operasi hanya memodifikasi metadata tanpa membangun ulang seluruh tabel. Jika tidak, algoritma COPY diperlukan untuk membangun ulang tabel.

PolarDB for MySQL 5.6

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kolom

Ya

No1

Ya1

Tidak didukung

Menghapus kolom

Ya

Ya

Tidak

Tidak didukung

Mengganti nama kolom

Ya

Tidak

Ya

N/A

Mengatur ulang urutan kolom

Ya

Ya

Tidak

Tidak didukung

Menetapkan nilai default kolom

Ya

Tidak

Ya

N/A

Mengubah komentar kolom

Ya

Tidak

Ya

N/A

Mengubah tipe kolom

Tidak

Ya

Tidak

Tidak didukung

Memperpanjang panjang kolom VARCHAR

Tidak

Ya

Tidak

Tidak didukung

Mengubah set karakter dari UTF8mb3 ke UTF8mb4

Tidak

Ya

Tidak

Tidak didukung

Menghapus nilai default kolom

Ya

Tidak

Ya

N/A

Mengubah nilai auto-increment

Ya

Tidak

Ya

N/A

Mengubah kolom menjadi NULL

Ya

Ya

Tidak

Tidak didukung

Mengubah kolom menjadi NOT NULL

Tidak

Ya

Tidak

Tidak didukung

Memodifikasi definisi kolom ENUM/SET

Ya

Tidak

Ya2

N/A

  1. Untuk mengaktifkan fitur Penambahan kolom instan di akhir tabel, atur parameter loose_innodb_support_instant_add_column ke ON. Fitur ini hanya mendukung penambahan kolom di akhir tabel. Jika tabel tidak memiliki kunci primer eksplisit, atur parameter implicit_primary_key ke OFF untuk mencegah kegagalan operasi akibat adanya kolom kunci primer implisit di akhir tabel. Penambahan kolom instan tidak didukung pada tabel terkompresi (ROW_FORMAT=COMPRESSED), tabel dengan indeks teks penuh, tabel temporary, atau tabel partisi. Jika kluster tidak mendukung fitur ini, penambahan kolom akan menggunakan algoritma INPLACE yang memerlukan pembangunan ulang tabel penuh. Pembacaan dan penulisan konkuren tetap diperbolehkan selama proses tersebut.

    Catatan

    Fitur penambahan kolom instan PolarDB for MySQL berada dalam tahap rilis canary. Untuk menggunakannya, buka Quota Center, gunakan Quota ID polardb_mysql_iac_56 untuk menemukan kuota, lalu klik Apply di kolom Actions untuk mengaktifkan fitur ini.

  2. Hanya jika ukuran penyimpanan tipe data tidak berubah dan elemen ditambahkan di akhir ENUM atau SET, operasi hanya memodifikasi metadata tanpa membangun ulang seluruh tabel. Jika tidak, algoritma COPY diperlukan untuk membangun ulang tabel.

Operasi tabel

PolarDB for MySQL 8.0.2

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Mengubah ROW_FORMAT

Ya

Ya

Tidak

Didukung

Mengubah KEY_BLOCK_SIZE

Ya

Ya

Tidak

Didukung

Mengonfigurasi statistik persisten

Ya

Tidak

Ya

N/A

Mendeklarasikan set karakter

Ya

Tidak

Ya

N/A

Mengonversi set karakter

Tidak

Ya

Tidak

Tidak didukung

Mengoptimalkan tabel

Ya

Ya

Catatan

Saat ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=INPLACE, LOCK=NONE digunakan untuk mendefragmentasi tabel, tabel dengan indeks teks penuh tidak mendukung algoritma INPLACE.

Tidak

Didukung

Membangun ulang tabel

Ya

Ya

Tidak

Didukung

Mengganti nama tabel

Ya

Tidak

Ya

N/A

Mengubah komentar tabel

Ya

Tidak

Ya

N/A

Membuat tabel (CREATE TABLE)

\

\

Ya

N/A

PolarDB for MySQL 8.0.1

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Mengubah ROW_FORMAT

Ya

Ya

Tidak

Didukung

Mengubah KEY_BLOCK_SIZE

Ya

Ya

Tidak

Didukung

Mengonfigurasi statistik persisten

Ya

Tidak

Ya

N/A

Mendeklarasikan set karakter

Ya

Tidak

Ya

N/A

Mengonversi set karakter

Tidak

Ya

Tidak

Tidak didukung

Mengoptimalkan tabel

Ya

Ya

Catatan

Saat ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=INPLACE, LOCK=NONE digunakan untuk mendefragmentasi tabel, tabel dengan indeks teks penuh tidak mendukung algoritma INPLACE.

Tidak

Didukung

Membangun ulang tabel

Ya

Ya

Tidak

Didukung

Mengganti nama tabel

Ya

Tidak

Ya

N/A

Mengubah komentar tabel

Ya

Tidak

Ya

N/A

Membuat tabel (CREATE TABLE)

\

\

Ya

N/A

PolarDB for MySQL 5.7

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Mengubah ROW_FORMAT

Ya

Ya

Tidak

Didukung

Mengubah KEY_BLOCK_SIZE

Ya

Ya

Tidak

Didukung

Mengonfigurasi statistik persisten

Ya

Tidak

Ya

N/A

Mendeklarasikan set karakter

Ya

Tidak

Ya

N/A

Mengonversi set karakter

Tidak

Ya

Tidak

Tidak didukung

Mengoptimalkan tabel

Ya

Ya

Catatan

Saat ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=INPLACE, LOCK=NONE digunakan untuk mendefragmentasi tabel, tabel dengan indeks teks penuh tidak mendukung algoritma INPLACE.

Tidak

Didukung

Membangun ulang tabel

Ya

Ya

Tidak

Didukung

Mengganti nama tabel

Ya

Tidak

Ya

N/A

Mengubah komentar tabel

Ya

Tidak

Ya

N/A

Membuat tabel (CREATE TABLE)

\

\

Ya

N/A

PolarDB for MySQL 5.6

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Mengubah ROW_FORMAT

Ya

Ya

Tidak

Tidak didukung

Mengubah KEY_BLOCK_SIZE

Ya

Ya

Tidak

Tidak didukung

Mengonfigurasi statistik persisten

Ya

Tidak

Ya

N/A

Mendeklarasikan set karakter

Ya

Tidak

Ya

N/A

Mengonversi set karakter

Tidak

Ya

Tidak

Tidak didukung

Mengoptimalkan tabel

Ya

Ya

Catatan

Saat ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=INPLACE, LOCK=NONE digunakan untuk mendefragmentasi tabel, tabel dengan indeks teks penuh tidak mendukung algoritma INPLACE.

Tidak

Tidak didukung

Membangun ulang tabel

Ya

Ya

Tidak

Tidak didukung

Mengganti nama tabel

Ya

Tidak

Ya

N/A

Mengubah komentar tabel

Ya

Tidak

Ya

N/A

Membuat tabel (CREATE TABLE)

\

\

Ya

N/A

Saat menjalankan pernyataan CREATE TABLE secara batch, kami merekomendasikan agar Anda membaginya menjadi batch yang lebih kecil dan mengeksekusinya selama jam sepi, serta menghindari jendela pemeliharaan seperti skala keluar kluster. Eksekusi intensif dapat secara singkat menduduki sumber daya metadata lock (MDL), meskipun tidak berdampak langsung terhadap data atau beban kerja yang ada.

Operasi kolom yang dihasilkan

PolarDB for MySQL 8.0.2

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kolom STORED

Tidak

Catatan

Menambahkan ekspresi kolom STORED melibatkan layer SQL/Server, sehingga Online DDL tidak didukung saat menambahkan kolom STORED.

Ya

Tidak

Tidak didukung

Mengatur ulang urutan kolom STORED

Tidak

Ya

Tidak

Tidak didukung

Menghapus kolom STORED

Ya

Ya

Tidak

Didukung

Menambahkan kolom VIRTUAL

Ya

Tidak

Ya

N/A

Mengatur ulang urutan kolom VIRTUAL

Tidak

Ya

Tidak

Tidak didukung

Menghapus kolom VIRTUAL

Ya

Tidak

Ya

N/A

PolarDB for MySQL 8.0.1

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kolom STORED

Tidak

Catatan

Menambahkan ekspresi kolom STORED melibatkan layer SQL/Server, sehingga Online DDL tidak didukung saat menambahkan kolom STORED.

Ya

Tidak

Tidak didukung

Mengatur ulang urutan kolom STORED

Tidak

Ya

Tidak

Tidak didukung

Menghapus kolom STORED

Ya

Ya

Tidak

Didukung

Menambahkan kolom VIRTUAL

Ya

Tidak

Ya

N/A

Mengatur ulang urutan kolom VIRTUAL

Tidak

Ya

Tidak

Tidak didukung

Menghapus kolom VIRTUAL

Ya

Tidak

Ya

N/A

PolarDB for MySQL 5.7

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kolom STORED

Tidak

Catatan

Menambahkan ekspresi kolom STORED melibatkan layer SQL/Server, sehingga Online DDL tidak didukung saat menambahkan kolom STORED.

Ya

Tidak

Tidak didukung

Mengatur ulang urutan kolom STORED

Tidak

Ya

Tidak

Tidak didukung

Menghapus kolom STORED

Ya

Ya

Tidak

Didukung

Menambahkan kolom VIRTUAL

Ya

Tidak

Ya

N/A

Mengatur ulang urutan kolom VIRTUAL

Tidak

Ya

Tidak

Tidak didukung

Menghapus kolom VIRTUAL

Ya

Tidak

Ya

N/A

PolarDB for MySQL 5.6

PolarDB for MySQL 5.6 tidak mendukung kolom terhitung.

Operasi kunci asing

PolarDB for MySQL 8.0.2

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kunci asing

Ya1

Tidak1

Ya1

N/A

Menghapus kunci asing

Ya1

Tidak1

Ya1

N/A

PolarDB for MySQL 8.0.1

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kunci asing

Ya1

Tidak1

Ya1

N/A

Menghapus kunci asing

Ya1

Tidak1

Ya1

N/A

PolarDB for MySQL 5.7

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kunci asing

Ya1

Tidak1

Ya1

N/A

Menghapus kunci asing

Ya1

Tidak1

Ya1

N/A

PolarDB for MySQL 5.6

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan kunci asing

Ya1

No1

Ya1

N/A

Menghapus kunci asing

Ya1

Tidak1

Ya1

N/A

DDL INPLACE hanya didukung saat sakelar foreign_key_checks dinonaktifkan dan hanya metadata yang dimodifikasi. Jika tidak, hanya DDL COPY yang didukung, dan tabel dikunci sepanjang durasi.

Operasi tabel partisi

PolarDB for MySQL 8.0.2

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan partisi (ADD)

Ya1

No2

Ya

Tidak didukung

Menghapus partisi (DROP)

Ya1

No2

Tidak

Tidak didukung

Membuang ruang tabel partisi (DISCARD)

Tidak

Tidak

Tidak

Tidak didukung

Mengimpor ruang tabel partisi (IMPORT)

Tidak

Tidak

Tidak

Tidak didukung

Memotong partisi (TRUNCATE)

Ya

Tidak

Tidak

Tidak didukung

Menggabungkan partisi (COALESCE)

Tidak

Ya3

Tidak

Tidak didukung

Mendistribusikan ulang partisi (REORGANIZE)

Ya1

No7

Tidak

Tidak didukung

Menukar partisi (EXCHANGE)

Ya1

Tidak

Ya

Tidak didukung

Menganalisis partisi (ANALYZE)

Ya

Tidak

No8

Tidak didukung

Memeriksa partisi (CHECK)

Ya

Tidak

No9

Tidak didukung

Mengoptimalkan partisi (OPTIMIZE)

Ya4

Ya4

Tidak

Didukung4

Membangun ulang partisi (REBUILD)

Ya1

No7

Tidak

Tidak didukung

Memperbaiki partisi (REPAIR)

Ya

Tidak10

Tidak

Tidak didukung

Mengonversi tabel menjadi partisi

Tidak

Ya

Ya5

Tidak didukung

Mengonversi partisi menjadi tabel

Tidak

Ya

Tidak

Tidak didukung

Membuat PARTIAL INDEX

Ya

No6

Tidak

Didukung

  1. Memperkenalkan kunci metadata tingkat partisi (MDL). Setelah Anda mengatur parameter loose_partition_level_mdl_enabled ke true, operasi DDL tidak memengaruhi DML pada partisi yang tidak terlibat. Untuk informasi selengkapnya, lihat Pemeliharaan partisi online.

  2. Partisi RANGE dan LIST tidak memerlukan pembangunan ulang tabel saat menambahkan atau menghapus partisi. Partisi HASH dan KEY memerlukan pembangunan ulang tabel saat menambahkan partisi. Menghapus partisi dari partisi HASH dan KEY tidak didukung.

  3. Hanya partisi HASH dan KEY yang didukung.

  4. Saat menjalankan operasi OPTIMIZE PARTITION pada tabel di engine InnoDB, seluruh tabel partisi dibangun ulang. Pembacaan dan penulisan pada tabel target tetap didukung selama proses tersebut. Anda dapat mengatur parameter innodb_parallel_build_primary_index ke ON dan menggunakan fitur Parallel DDL untuk mempercepat pembangunan ulang.

  5. Konversi instan hanya mendukung Mengonversi tabel non-partisi menjadi tabel terpartisi rentang.

  6. PolarDB for MySQL mendukung pembuatan dan penghapusan indeks pada granularitas partisi. Untuk informasi selengkapnya, lihat Indeks parsial.

  7. Mendistribusikan ulang atau membangun ulang partisi hanya membangun ulang partisi yang ditentukan yang memerlukan redistribusi atau pembangunan ulang. Partisi lain tidak terpengaruh.

  8. Menganalisis partisi hanya memodifikasi statistik dan tidak memodifikasi metadata atau data tabel.

  9. Memeriksa partisi tidak memodifikasi metadata atau data.

  10. Memperbaiki partisi hanya membangun ulang partisi yang ditentukan yang perlu diperbaiki.

PolarDB for MySQL 8.0.1

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan partisi (ADD)

Tidak

No.1

Ya

Tidak didukung

Menghapus partisi (DROP)

Tidak

No2

Tidak

Tidak didukung

Membuang ruang tabel partisi (DISCARD)

Tidak

Tidak

Tidak

Tidak didukung

Mengimpor ruang tabel partisi (IMPORT)

Tidak

Tidak

Tidak

Tidak didukung

Memotong partisi (TRUNCATE)

Ya

Tidak

Tidak

Tidak didukung

Menggabungkan partisi (COALESCE)

Tidak

Ya

Tidak

Tidak didukung

Mendistribusikan ulang partisi (REORGANIZE)

Tidak

Tidak4

Tidak

Tidak didukung

Menukar partisi (EXCHANGE)

Ya

Ya

Ya

Tidak didukung

Menganalisis partisi (ANALYZE)

Ya

Ya

Tidak5

Tidak didukung

Memeriksa partisi (CHECK)

Ya

Tidak

No6

Tidak didukung

Mengoptimalkan partisi (OPTIMIZE)

Ya3

Ya3

Tidak

Didukung3

Membangun ulang partisi (REBUILD)

Tidak

Tidak4

Tidak

Tidak didukung

Memperbaiki partisi (REPAIR)

Ya

No4

Tidak

Tidak didukung

Mengonversi tabel menjadi partisi

Tidak

Ya

Tidak

Tidak didukung

Mengonversi partisi menjadi tabel

Tidak

Ya

Tidak

Tidak didukung

  1. Partisi RANGE dan LIST tidak memerlukan pembangunan ulang tabel saat menambahkan partisi. Partisi HASH dan KEY memerlukan pembangunan ulang tabel saat menambahkan partisi.

  2. Partisi HASH dan KEY tidak didukung.

  3. Saat menjalankan operasi OPTIMIZE PARTITION pada tabel di engine InnoDB, seluruh tabel partisi dibangun ulang. Pembacaan dan penulisan pada tabel target tetap didukung selama proses tersebut. Anda dapat mengatur parameter innodb_parallel_build_primary_index ke ON dan menggunakan fitur Parallel DDL untuk mempercepat pembangunan ulang.

  4. Mendistribusikan ulang, membangun ulang, dan memperbaiki partisi hanya membangun ulang partisi yang ditentukan yang memerlukan redistribusi, pembangunan ulang, atau perbaikan. Partisi lain tidak terlibat.

  5. Menganalisis partisi hanya memodifikasi statistik dan tidak memodifikasi metadata atau data tabel.

  6. Memeriksa partisi tidak memodifikasi metadata atau data.

PolarDB for MySQL 5.7

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan partisi (ADD)

Tidak

Tidak1

Ya

Tidak didukung

Menghapus partisi (DROP)

Tidak

Tidak1

Tidak

Tidak didukung

Membuang ruang tabel partisi (DISCARD)

Tidak

Tidak

Tidak

Tidak didukung

Mengimpor ruang tabel partisi (IMPORT)

Tidak

Tidak

Tidak

Tidak didukung

Memotong partisi (TRUNCATE)

Ya

Tidak

Tidak

Tidak didukung

Menggabungkan partisi (COALESCE)

Tidak

Ya

Tidak

Tidak didukung

Mendistribusikan ulang partisi (REORGANIZE)

Tidak

No.2

Tidak

Tidak didukung

Menukar partisi (EXCHANGE)

Ya

Tidak

Ya

Tidak didukung

Menganalisis partisi (ANALYZE)

Ya

Tidak

No3

Tidak didukung

Memeriksa partisi (CHECK)

Ya

Tidak

No4

Tidak didukung

Mengoptimalkan partisi (OPTIMIZE)

Tidak

Ya

Tidak

Tidak didukung

Membangun ulang partisi (REBUILD)

Tidak

Tidak2

Tidak

Tidak didukung

Memperbaiki partisi (REPAIR)

Ya

No2

Tidak

Tidak didukung

Mengonversi tabel menjadi partisi

Tidak

Ya

Tidak

Tidak didukung

Mengonversi partisi menjadi tabel

Tidak

Ya

Tidak

Tidak didukung

  1. Partisi RANGE dan LIST tidak memerlukan pembangunan ulang tabel saat menambahkan atau menghapus partisi. Partisi HASH dan KEY memerlukan pembangunan ulang tabel saat menambahkan partisi. Menghapus partisi dari partisi HASH dan KEY tidak didukung.

  2. Mendistribusikan ulang, membangun ulang, dan memperbaiki partisi hanya membangun ulang partisi yang ditentukan yang memerlukan redistribusi, pembangunan ulang, atau perbaikan. Partisi lain tidak terlibat.

  3. Menganalisis partisi hanya memodifikasi statistik dan tidak memodifikasi metadata atau data tabel.

  4. Memeriksa partisi tidak memodifikasi metadata atau data.

PolarDB for MySQL 5.6

Operasi

DML konkuren diperbolehkan

Membangun ulang tabel

Hanya metadata

Parallel DDL didukung

Menambahkan partisi (ADD)

Tidak

Tidak1

Ya

Tidak didukung

Menghapus partisi (DROP)

Tidak

Tidak1

Tidak

Tidak didukung

Membuang ruang tabel partisi (DISCARD)

Tidak

Tidak

Tidak

Tidak didukung

Mengimpor ruang tabel partisi (IMPORT)

Tidak

Tidak

Tidak

Tidak didukung

Memotong partisi (TRUNCATE)

Ya

Tidak

Tidak

Tidak didukung

Menggabungkan partisi (COALESCE)

Tidak

Ya

Tidak

Tidak didukung

Mendistribusikan ulang partisi (REORGANIZE)

Tidak

No2

Tidak

Tidak didukung

Menukar partisi (EXCHANGE)

Ya

Tidak

Ya

Tidak didukung

Menganalisis partisi (ANALYZE)

Ya

Tidak

No3

Tidak didukung

Memeriksa partisi (CHECK)

Ya

Tidak

No.4

Tidak didukung

Mengoptimalkan partisi (OPTIMIZE)

Tidak

Ya

Tidak

Tidak didukung

Membangun ulang partisi (REBUILD)

Tidak

No2

Tidak

Tidak didukung

Memperbaiki partisi (REPAIR)

Ya

No2

Tidak

Tidak didukung

Mengonversi tabel menjadi partisi

Tidak

Ya

Tidak

Tidak didukung

Mengonversi partisi menjadi tabel

Tidak

Ya

Tidak

Tidak didukung

  1. Partisi RANGE dan LIST tidak memerlukan pembangunan ulang tabel saat menambahkan atau menghapus partisi. Partisi HASH dan KEY memerlukan pembangunan ulang tabel saat menambahkan partisi. Menghapus partisi dari partisi HASH dan KEY tidak didukung.

  2. Mendistribusikan ulang, membangun ulang, dan memperbaiki partisi hanya membangun ulang partisi yang ditentukan yang memerlukan redistribusi, pembangunan ulang, atau perbaikan. Partisi lain tidak terlibat.

  3. Menganalisis partisi hanya memodifikasi statistik dan tidak memodifikasi metadata atau data tabel.

  4. Memeriksa partisi tidak memodifikasi metadata atau data.

Metode eksekusi DDL

  • Saat PolarDB for MySQL menggunakan algoritma INPLACE atau INSTANT untuk menjalankan operasi DDL, kami merekomendasikan metode kernel (Online DDL) karena lebih cepat dan stabil.

  • Saat PolarDB for MySQL menggunakan algoritma COPY, tabel dikunci sepanjang durasi dan tidak dapat dibaca atau ditulis selama eksekusi. Dalam kasus ini, pertimbangkan penggunaan alat pihak ketiga seperti perubahan tanpa penguncian DMS atau gh-ost. Alat ini memperbolehkan pembacaan dan penulisan selama eksekusi DDL, tetapi biasanya lebih lambat. Pada tabel besar atau dalam skenario konkurensi tinggi, eksekusi dapat gagal jika terdapat terlalu banyak data inkremental.

Tabel berikut menjelaskan perbedaan antara menjalankan operasi DDL dengan metode kernel dan dengan alat pihak ketiga:

Metode eksekusi

Pembacaan dan penulisan konkuren diperbolehkan

Kecepatan eksekusi

Binlog diperlukan

Akselerasi paralel

Kernel (Online DDL)

Ya

Cepat

Tidak

Didukung

Alat pihak ketiga (perubahan tanpa penguncian DMS, gh-ost, dll.)

Ya

Lambat

Ya

Tidak didukung

Catatan

Bahkan jika Anda menggunakan alat pihak ketiga untuk menjalankan operasi DDL, kunci MDL-X tetap diperoleh selama pergantian tabel (modifikasi metadata), yang menyebabkan penguncian tabel singkat. Anda dapat mengaktifkan fitur Pernyataan DDL Nonblocking atau fitur DDL Preemptive untuk menghindari masalah penguncian tabel.

Hubungi kami

Jika Anda memiliki pertanyaan tentang operasi DDL, Hubungi kami.