全部产品
Search
文档中心

PolarDB:Panduan operasi DDL untuk PolarDB for MySQL

更新时间:Nov 11, 2025

Topik ini menjelaskan operasi Data Definition Language (DDL) umum dalam database cloud-native PolarDB for MySQL. Panduan ini membantu Anda memahami perilaku DDL, menilai risiko operasional, serta mengurangi dampak terhadap bisnis Anda.

Ikhtisar operasi DDL

Dalam ekosistem MySQL, operasi DDL bersifat kompleks dan mencakup berbagai jenis, seperti operasi indeks, kunci primer, kolom, tabel, kunci asing, dan kolom terhasil. Operasi DDL umumnya memakan waktu lama, intensif sumber daya, dan melibatkan penguncian tabel. Jika tidak ditangani dengan benar, operasi ini dapat mengganggu operasi bisnis dan menyebabkan kegagalan bencana.

Modul DDL PolarDB for MySQL telah mengalami peningkatan signifikan selama bertahun-tahun pengembangan untuk meningkatkan performa dan stabilitas penguncian. Topik ini menjelaskan perilaku operasi DDL umum di berbagai versi PolarDB for MySQL berdasarkan aspek-aspek berikut:

  • Mengizinkan DML konkuren (tanpa penguncian): Pernyataan DDL tanpa penguncian (Online DDL) hanya meminta kunci eksklusif pada tabel saat memodifikasi metadata. Kunci ini biasanya berlangsung kurang dari satu detik. Selama evolusi skema, Anda dapat membaca dan menulis ke tabel target, sehingga meningkatkan kecepatan respons dan ketersediaan di lingkungan produksi. Sebaliknya, pernyataan yang tidak mendukung Online DDL mengunci tabel selama durasi operasi dan mencegah operasi tulis konkuren. Jika operasi DDL berjalan lama, hal ini dapat berdampak signifikan terhadap bisnis Anda.

  • Membangun ulang tabel (waktu eksekusi lama): Jenis operasi DDL ini membuat ulang kunci primer dan semua indeks sekunder berdasarkan skema tabel baru. Proses ini biasanya memakan waktu lama.

    Catatan

    PolarDB for MySQL mendukung DDL paralel. Performa eksekusi DDL menggunakan metode kernel jauh lebih baik dibandingkan menggunakan alat pihak ketiga seperti gh-ost atau pt-osc.

  • Hanya memodifikasi metadata (selesai dalam hitungan detik): Jenis operasi DDL ini hanya memodifikasi metadata tanpa mengubah data tabel. Waktu eksekusinya tidak meningkat seiring ukuran tabel dan biasanya selesai dalam hitungan detik.

  • Dukungan untuk DDL paralel (akselerasi multi-threaded): Untuk operasi pada tabel besar, seperti membuat indeks atau membangun ulang tabel, PolarDB mendukung DDL paralel. Fitur ini menggunakan beberapa thread untuk meningkatkan efisiensi eksekusi DDL dan dapat meningkatkan performa hingga 15–20 kali lipat. Untuk informasi selengkapnya, lihat DDL Paralel.

  • Dampak performa (perubahan tanpa penguncian): Menerapkan evolusi skema tanpa penguncian menggunakan tiket perubahan tanpa penguncian mencegah koneksi sementara dan tidak memengaruhi bisnis Anda selama jam non-sibuk.

    Catatan

    Lakukan operasi ini selama jam non-sibuk karena dapat meningkatkan operasi input/output per detik (IOPS) dan penggunaan CPU.

Algoritma eksekusi DDL

PolarDB for MySQL mendukung tiga algoritma eksekusi DDL berikut:

  • Algoritma INSTANT: Algoritma INSTANT hanya memodifikasi metadata dalam kamus data. Algoritma ini tidak memodifikasi atau menyalin data historis dan tidak membangun ulang tabel. Oleh karena itu, operasi ini tidak bergantung pada ukuran tabel dan selesai dalam hitungan detik.

  • Algoritma INPLACE: Dengan algoritma INPLACE, replikasi dan pembangunan ulang data diselesaikan di dalam engine untuk eksekusi yang lebih cepat. Sebagian besar operasi DDL yang menggunakan algoritma INPLACE mengizinkan akses baca dan tulis konkuren, yang meminimalkan dampak terhadap bisnis Anda. Selain itu, beberapa operasi DDL yang menggunakan algoritma INPLACE, seperti RENAME TABLE dan ADD COMMENT, hanya memodifikasi metadata tanpa mengubah data tabel dan dapat diselesaikan dalam hitungan detik.

  • Algoritma COPY: Algoritma COPY menyalin semua data dari tabel asli ke tabel baru. Selama replikasi data, kunci shared-no-write (SNW) diterapkan pada tabel asli, sehingga hanya operasi baca yang didukung selama operasi DDL. Operasi tulis konkuren diblokir, yang berdampak signifikan terhadap bisnis Anda.

Operasi DDL yang mengizinkan operasi baca dan tulis konkuren secara kolektif dikenal sebagai Online DDL. Online DDL memiliki dampak minimal terhadap bisnis Anda. Biasanya, Anda tidak perlu menentukan algoritma DDL secara manual. PolarDB secara otomatis memilih algoritma optimal dalam urutan INSTANT, INPLACE, lalu COPY. Anda juga dapat menggunakan klausa ALGORITHM dan LOCK pada pernyataan ALTER TABLE untuk mengelola perilaku DDL dengan kontrol detail halus:

  • Klausa ALGORITHM: Untuk mengeksekusi pernyataan DDL menggunakan algoritma tertentu, Anda dapat menentukan klausa ALGORITHM. Nilai yang tersedia adalah DEFAULT, INSTANT, INPLACE, dan COPY. Jika operasi DDL tidak mendukung algoritma yang ditentukan, kesalahan akan dikembalikan segera.

  • Klausa LOCK: Klausa LOCK menyesuaikan akses konkuren ke tabel selama eksekusi DDL. Anda dapat menggunakan klausa ini untuk mengontrol tingkat akses baca dan tulis konkuren saat tabel dimodifikasi. Opsi yang tersedia beserta deskripsinya adalah sebagai berikut:

    • DEFAULT: Kernel mengizinkan tingkat maksimum akses baca dan tulis konkuren berdasarkan jenis DDL.

    • NONE: Mengizinkan akses baca dan tulis konkuren selama eksekusi DDL. Jika tidak didukung, kesalahan akan dikembalikan.

    • SHARED: Mengizinkan akses baca konkuren tetapi memblokir tulis. Jika akses baca konkuren tidak didukung, kesalahan akan dikembalikan.

    • EXCLUSIVE: Melarang semua akses baca dan tulis konkuren selama operasi DDL.

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

Pratinjau perilaku eksekusi DDL menggunakan fitur EXPLAIN DDL

Topik ini mencantumkan perilaku eksekusi operasi DDL umum. Namun, karena PolarDB memiliki banyak fitur, perilaku eksekusi DDL aktual dapat dipengaruhi oleh berbagai faktor, seperti struktur tabel target, konfigurasi parameter instans, dan status aktif atau tidaknya fitur tertentu.

Untuk meningkatkan keamanan dan prediktabilitas evolusi skema, Anda dapat menggunakan fitur EXPLAIN DDL untuk mempratinjau perilaku eksekusi operasi DDL kompleks sebelum melakukannya.

Gunakan sintaks berikut untuk melihat perilaku eksekusi pernyataan DDL:

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

Menggunakan EXPLAIN DDL, Anda dapat memperoleh informasi kunci berikut:

  • Apakah operasi DDL saat ini dapat dieksekusi dengan sukses.

  • Jenis algoritma yang digunakan oleh operasi DDL saat ini. Nilainya dapat berupa INSTANT, INPLACE, atau COPY.

  • Apakah operasi DDL saat ini perlu membangun ulang seluruh data tabel. Membangun ulang tabel penuh biasanya memakan waktu lama.

  • Apakah operasi DML konkuren diizinkan selama eksekusi pernyataan DDL saat ini.

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

  • Apakah operasi DDL saat ini mendukung akselerasi DDL paralel. Jika didukung, tingkat paralelisme untuk operasi DDL saat ini akan ditampilkan.

Dengan memahami informasi ini terlebih dahulu, Anda dapat lebih akurat menilai dampak DDL, memilih waktu eksekusi yang tepat, dan secara efektif menghindari dampak terhadap layanan online Anda, seperti tabel terkunci dan waktu eksekusi yang terlalu lama. Untuk informasi selengkapnya, lihat EXPLAIN DDL.

Perilaku DDL

Operasi indeks

PolarDB for MySQL 8.0.2

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Buat indeks sekunder

Ya

Tidak

Tidak

Didukung

Menghapus indeks sekunder

Ya

Tidak

Ya

Tidak berlaku

Ganti nama indeks sekunder

Ya

Tidak

Ya

Tidak berlaku

Menambahkan indeks teks penuh (FULLTEXT)

Tidak

Tidak

Catatan

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

Tidak

Tidak didukung

Tambahkan indeks spasial (SPATIAL)

Tidak

Tidak

Tidak

Tidak didukung

PolarDB for MySQL 8.0.1

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Buat indeks sekunder

Ya

Tidak

Tidak

Didukung

Menghapus indeks sekunder

Ya

Tidak

Ya

Tidak berlaku

Ganti nama indeks sekunder

Ya

Tidak

Ya

Tidak berlaku

Menambahkan indeks teks penuh (FULLTEXT)

Tidak

Tidak

Catatan

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

Tidak

Tidak didukung

Menambahkan indeks spasial (SPATIAL)

Tidak

Tidak

Tidak

Tidak didukung

PolarDB for MySQL 5.7

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Buat indeks sekunder

Ya

Tidak

Tidak

Didukung

Menghapus indeks sekunder

Ya

Tidak

Ya

Tidak berlaku

Ganti nama indeks sekunder

Ya

Tidak

Ya

Tidak berlaku

Menambahkan indeks teks penuh (FULLTEXT)

Tidak

Tidak

Catatan

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

Tidak

Tidak didukung

Menambahkan indeks spasial (SPATIAL)

Tidak

Tidak

Tidak

Tidak didukung

PolarDB for MySQL 5.6

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Buat indeks sekunder

Ya

Tidak

Tidak

Tidak didukung

Menghapus indeks sekunder

Ya

Tidak

Ya

Tidak berlaku

Ganti nama indeks sekunder

Ya

Tidak

Ya

Tidak berlaku

Menambahkan indeks teks penuh (FULLTEXT)

Tidak

Tidak

Catatan

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

Tidak

Tidak didukung

Menambahkan indeks spasial (SPATIAL)

Tidak

Tidak

Tidak

Tidak didukung

Operasi kunci utama

PolarDB for MySQL 8.0.2

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Menambahkan kunci primer

Ya

Ya

Tidak

Didukung

Menghapus kunci primer

Tidak

Ya

Tidak

Tidak didukung

Menghapus kunci primer asli dan menambahkan yang baru

Ya

Ya

Tidak

Didukung

PolarDB for MySQL 8.0.1

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Menambahkan kunci primer

Ya

Ya

Tidak

Dukungan

Menghapus kunci primer

Tidak

Ya

Tidak

Tidak didukung

Menghapus kunci primer asli dan menambahkan yang baru

Ya

Ya

Tidak

Didukung

PolarDB for MySQL 5.7

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Menambahkan kunci primer

Ya

Ya

Tidak

Didukung

Menghapus kunci primer

Tidak

Ya

Tidak

Tidak didukung

Menghapus kunci primer asli dan menambahkan yang baru

Ya

Ya

Tidak

Didukung

PolarDB for MySQL 5.6

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Menambahkan kunci primer

Ya

Ya

Tidak

Tidak didukung

Menghapus kunci primer

Tidak

Ya

Tidak

Tidak didukung

Menghapus kunci primer asli dan menambahkan yang baru

Ya

Ya

Tidak

Tidak didukung

Catatan

Dalam skenario berikut, DML konkuren hanya diizinkan ketika parameter kluster sql_mode mencakup STRICT_TRANS_TABLES atau STRICT_ALL_TABLES:

  • Menambahkan kunci primer

  • Menghapus kunci primer asli dan menambahkan yang baru

Operasi kolom

PolarDB for MySQL 8.0.2

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Tambahkan kolom

Ya

Tidak¹

Ya¹

Didukung¹

Hapus kolom

Ya

Ya

Tidak

Didukung

Mengganti nama kolom

Ya

Tidak

Ya

Tidak berlaku

Atur ulang kolom

Ya

Ya

Tidak

Didukung

Menetapkan nilai default kolom

Ya

Tidak

Ya

Tidak berlaku

Ubah komentar kolom

Ya

Tidak

Ya

Tidak berlaku

Memodifikasi tipe kolom

Tidak

Ya

Tidak

Tidak didukung

Memperpanjang panjang VARCHAR

Ya²

Tidak

Ya

Tidak berlaku

Ubah set karakter dari UTF8mb3 ke UTF8mb4

Tidak

Tidak³

Ya³

Tidak didukung

Menghapus nilai default kolom

Ya

Tidak

Ya

Tidak berlaku

Ubah nilai auto-increment

Ya

Tidak

Ya

Tidak berlaku

Mengubah kolom menjadi NULL

Ya

Ya

Tidak

Dukungan

Mengubah kolom menjadi NOT NULL

Tidak

Ya

Tidak

Tidak didukung

Memodifikasi definisi kolom ENUM/SET

Ya

Tidak

Ya⁴

Tidak berlaku

  1. Fitur instant ADD COLUMN hanya mendukung penambahan kolom di akhir tabel. Jika tabel tidak memiliki kunci primer yang ditentukan, Anda harus mengatur parameter implicit_primary_key ke OFF untuk mencegah operasi penambahan kolom gagal karena adanya kolom kunci primer implisit di akhir tabel. Fitur instant ADD COLUMN tidak didukung pada tabel terkompresi (ROW_FORMAT=COMPRESSED), tabel dengan indeks teks penuh, atau tabel sementara. Jika kluster tidak mendukung fitur instant ADD COLUMN, sistem akan menambahkan kolom menggunakan algoritma INPLACE, yang memicu pembangunan ulang tabel. Selama proses tersebut, operasi baca dan tulis konkuren diizinkan. Anda juga dapat menggunakan fitur DDL paralel untuk mempercepat penambahan kolom.

  2. Saat memperpanjang panjang kolom VARCHAR, jumlah byte yang diperlukan untuk menyimpan panjang harus tetap sama agar ekstensi kolom cepat didukung. Secara khusus, kolom VARCHAR berukuran 0 hingga 255 byte memerlukan satu byte untuk menyimpan panjangnya, sedangkan kolom VARCHAR berukuran 256 byte atau lebih memerlukan dua byte. Pernyataan ALTER TABLE hanya dapat memodifikasi metadata jika ekstensi panjang kolom VARCHAR berada dalam rentang tertentu, seperti dari 0 hingga 255 byte atau dari 256 byte ke ukuran yang lebih besar. Jika Anda mengubah panjang kolom VARCHAR dari kurang dari 256 byte menjadi 256 byte atau lebih, PolarDB secara default menggunakan DDL Copy, yang mengunci tabel selama durasi penuh. Operasi tulis DML tidak didukung, tetapi operasi baca didukung.

    Jika Anda tidak yakin apakah rentang modifikasi kolom VARCHAR Anda memenuhi kondisi di atas, Anda dapat menggunakan ALGORITHM=INPLACE untuk menentukan bahwa algoritma INPLACE digunakan untuk operasi DDL saat ini. Jika ekstensi kolom cepat tidak didukung, kesalahan akan segera dilaporkan. Contoh:

    ALTER TABLE table_name ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(256);
    
    ERROR 0A000: ALGORITHM=INPLACE tidak didukung. Alasan: Tidak dapat mengubah tipe kolom INPLACE. Coba ALGORITHM=COPY.

    VARCHAR adalah kelas penyimpanan panjang variabel. Hanya panjang aktual yang disimpan di disk. Oleh karena itu, saat menggunakan kolom VARCHAR, pertimbangkan untuk mengatur panjang maksimum menjadi 256 byte atau lebih guna menghindari kebutuhan menggunakan algoritma COPY saat memperpanjang kolom.

  3. Jika kondisi berikut terpenuhi, mengubah set karakter kolom dari UTF8mb3 ke UTF8mb4 hanya memodifikasi metadata tanpa mengubah data. Jika tidak, algoritma COPY digunakan untuk membangun ulang tabel. Selama pembangunan ulang, tabel dikunci selama durasi penuh; Anda hanya dapat membaca dari tabel target, sedangkan operasi tulis diblokir.

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

    • Tidak ada indeks pada kolom yang dimodifikasi.

    • Sebelum dan sesudah konversi set karakter, panjang penyimpanan maksimum kolom adalah kurang dari 256 byte atau lebih dari 255 byte.

    Anda dapat menentukan ALGORITHM=INPLACE untuk memaksa penggunaan metode tanpa pembangunan ulang dalam mengeksekusi pernyataan DDL. Jika algoritma COPY diperlukan, kesalahan akan segera dikembalikan. Contoh:

    ALTER TABLE test modify column b char(1) CHARACTER SET utf8mb4 default null,algorithm = inplace;
    ERROR 1846 (0A000): ALGORITHM=INPLACE tidak didukung. Alasan: Tidak dapat mengubah tipe kolom INPLACE. Coba ALGORITHM=COPY.
  4. Anda hanya dapat memodifikasi metadata tanpa membangun ulang seluruh tabel jika ukuran penyimpanan tipe data tidak berubah dan Anda menambahkan elemen di akhir ENUM atau SET. Jika tidak, algoritma COPY diperlukan untuk membangun ulang tabel.

PolarDB for MySQL 8.0.1

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Tambahkan kolom

Ya

Tidak¹

Ya¹

Didukung¹

Hapus kolom

Ya

Ya

Tidak

Dukungan

Mengganti nama kolom

Ya

Tidak

Ya

Tidak berlaku

Atur ulang kolom

Ya

Ya

Tidak

Didukung

Menetapkan nilai default kolom

Ya

Tidak

Ya

Tidak berlaku

Ubah komentar kolom

Ya

Tidak

Ya

Tidak berlaku

Memodifikasi tipe kolom

Tidak

Ya

Tidak

Tidak didukung

Memperpanjang panjang VARCHAR

Ya²

Tidak

Ya

Tidak berlaku

Ubah set karakter dari UTF8mb3 ke UTF8mb4

Tidak

Tidak³

Ya³

Tidak didukung

Menghapus nilai default kolom

Ya

Tidak

Ya

Tidak berlaku

Ubah nilai auto-increment

Ya

Tidak

Ya

Tidak berlaku

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

Ya⁴

Tidak berlaku

  1. Fitur instant add column hanya mendukung penambahan kolom di akhir tabel. Jika tabel tidak memiliki kunci primer, Anda harus mengatur parameter implicit_primary_key ke OFF untuk mencegah operasi penambahan kolom gagal karena adanya kolom kunci primer implisit di akhir tabel. Fitur instant add column tidak didukung pada tabel terkompresi (ROW_FORMAT=COMPRESSED), tabel dengan indeks teks penuh, atau tabel sementara. Jika kluster tidak mendukung fitur instant add column, sistem akan menambahkan kolom menggunakan algoritma INPLACE, yang memicu pembangunan ulang tabel penuh. Selama pembangunan ulang, operasi baca dan tulis konkuren diizinkan. Anda juga dapat menggunakan fitur DDL paralel untuk mempercepat operasi.

    Selain itu, jika tabel berisi indeks penyimpanan kolom, fitur instant add column tidak didukung karena penambahan kolom memerlukan pembangunan ulang indeks penyimpanan kolom. Anda dapat mengatur parameter loose_imci_enable_add_column_instant_ddl ke ON untuk mengaktifkan fitur instant add column. Dalam hal ini, PolarDB secara asinkron membangun ulang indeks penyimpanan kolom di latar belakang. Selama pembangunan ulang, indeks penyimpanan kolom sementara tidak tersedia. Untuk informasi selengkapnya, lihat Sintaks DDL untuk menambahkan atau menghapus indeks penyimpanan kolom secara dinamis.

  2. Saat memperpanjang panjang kolom VARCHAR, jumlah byte yang diperlukan untuk menyimpan panjang harus tetap sama agar ekstensi kolom cepat didukung. Secara khusus, kolom VARCHAR berukuran 0 hingga 255 byte memerlukan satu byte untuk menyimpan panjangnya, sedangkan kolom VARCHAR berukuran 256 byte atau lebih memerlukan dua byte. Pernyataan ALTER TABLE hanya dapat memodifikasi metadata jika ekstensi panjang kolom VARCHAR berada dalam rentang tertentu, seperti dari 0 hingga 255 byte atau dari 256 byte ke ukuran yang lebih besar. Jika Anda mengubah panjang kolom VARCHAR dari kurang dari 256 byte menjadi 256 byte atau lebih, PolarDB secara default menggunakan DDL Copy, yang mengunci tabel selama durasi penuh. Operasi tulis DML tidak didukung, tetapi operasi baca didukung.

    Jika Anda tidak yakin apakah rentang modifikasi kolom VARCHAR Anda memenuhi kondisi di atas, Anda dapat menggunakan ALGORITHM=INPLACE untuk menentukan bahwa algoritma INPLACE digunakan untuk operasi DDL saat ini. Jika ekstensi kolom cepat tidak didukung, kesalahan akan segera dilaporkan. Contoh:

    ALTER TABLE table_name ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(256);
    
    ERROR 0A000: ALGORITHM=INPLACE tidak didukung. Alasan: Tidak dapat mengubah tipe kolom INPLACE. Coba ALGORITHM=COPY.

    VARCHAR adalah kelas penyimpanan panjang variabel. Hanya panjang aktual yang disimpan di disk. Oleh karena itu, saat menggunakan kolom VARCHAR, pertimbangkan untuk mengatur panjang maksimum menjadi 256 byte atau lebih guna menghindari kebutuhan menggunakan algoritma COPY saat memperpanjang kolom.

  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 digunakan untuk membangun ulang tabel. Selama pembangunan ulang, tabel dikunci selama durasi penuh; Anda hanya dapat membaca dari tabel target, sedangkan operasi tulis diblokir.

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

    • Tidak ada indeks pada kolom yang dimodifikasi.

    • Sebelum dan sesudah konversi set karakter, panjang penyimpanan maksimum kolom adalah kurang dari 256 byte atau lebih dari 255 byte.

    Anda dapat menentukan ALGORITHM=INPLACE untuk memaksa penggunaan metode tanpa pembangunan ulang dalam mengeksekusi pernyataan DDL. Jika algoritma COPY diperlukan, kesalahan akan segera dikembalikan. Contoh:

    ALTER TABLE test modify column b char(1) CHARACTER SET utf8mb4 default null,algorithm = inplace;
    ERROR 1846 (0A000): ALGORITHM=INPLACE tidak didukung. Alasan: Tidak dapat mengubah tipe kolom INPLACE. Coba ALGORITHM=COPY.
  4. Anda hanya dapat memodifikasi metadata tanpa membangun ulang seluruh tabel jika ukuran penyimpanan tipe data tidak berubah dan Anda menambahkan elemen di akhir ENUM atau SET. Jika tidak, algoritma COPY diperlukan untuk membangun ulang tabel.

PolarDB for MySQL 5.7

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Tambahkan kolom

Ya

Tidak¹

Ya¹

Didukung¹

Hapus kolom

Ya

Ya

Tidak

Didukung

Mengganti nama kolom

Ya

Tidak

Ya

Tidak berlaku

Atur ulang kolom

Ya

Ya

Tidak

Didukung

Menetapkan nilai default kolom

Ya

Tidak

Ya

Tidak berlaku

Ubah komentar kolom

Ya

Tidak

Ya

Tidak berlaku

Memodifikasi tipe kolom

Tidak

Ya

Tidak

Tidak didukung

Memperpanjang panjang VARCHAR

Ya²

Tidak

Ya

Tidak berlaku

Ubah set karakter dari UTF8mb3 menjadi UTF8mb4

Tidak

Ya

Tidak

Tidak didukung

Menghapus nilai default kolom

Ya

Tidak

Ya

Tidak berlaku

Ubah nilai auto-increment

Ya

Tidak

Ya

Tidak berlaku

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

Ya³

Tidak berlaku

  1. Untuk mengaktifkan fitur instant add column, Anda harus mengatur parameter loose_innodb_support_instant_add_column ke ON. Fitur ini hanya mendukung penambahan kolom di akhir tabel. Jika tabel tidak memiliki kunci primer, Anda harus mengatur parameter implicit_primary_key ke OFF untuk mencegah operasi gagal karena adanya kolom kunci primer implisit di akhir tabel. Fitur instant ADD COLUMN juga tidak didukung pada tabel terkompresi (ROW_FORMAT=COMPRESSED), tabel dengan indeks teks penuh, atau tabel sementara. Jika kluster tidak mendukung fitur instant ADD COLUMN, sistem akan menambahkan kolom menggunakan algoritma INPLACE. Proses ini memicu pembangunan ulang tabel dan mengizinkan operasi baca dan tulis konkuren. Anda juga dapat menggunakan fitur DDL paralel untuk mempercepat operasi.

  2. Saat memperpanjang panjang kolom VARCHAR, jumlah byte yang diperlukan untuk menyimpan panjang harus tetap sama agar ekstensi kolom cepat didukung. Secara khusus, kolom VARCHAR berukuran 0 hingga 255 byte memerlukan satu byte untuk menyimpan panjangnya, sedangkan kolom VARCHAR berukuran 256 byte atau lebih memerlukan dua byte. Pernyataan ALTER TABLE hanya dapat memodifikasi metadata jika ekstensi panjang kolom VARCHAR berada dalam rentang tertentu, seperti dari 0 hingga 255 byte atau dari 256 byte ke ukuran yang lebih besar. Jika Anda mengubah panjang kolom VARCHAR dari kurang dari 256 byte menjadi 256 byte atau lebih, PolarDB secara default menggunakan DDL Copy, yang mengunci tabel selama durasi penuh. Operasi tulis DML tidak didukung, tetapi operasi baca didukung.

    Jika Anda tidak yakin apakah rentang modifikasi kolom VARCHAR Anda memenuhi kondisi di atas, Anda dapat menggunakan ALGORITHM=INPLACE untuk menentukan bahwa algoritma INPLACE digunakan untuk operasi DDL saat ini. Jika ekstensi kolom cepat tidak didukung, kesalahan akan segera dilaporkan. Contoh:

    ALTER TABLE table_name ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(256);
    
    ERROR 0A000: ALGORITHM=INPLACE tidak didukung. Alasan: Tidak dapat mengubah tipe kolom INPLACE. Coba ALGORITHM=COPY.

    VARCHAR adalah kelas penyimpanan panjang variabel. Hanya panjang aktual yang disimpan di disk. Oleh karena itu, saat menggunakan kolom VARCHAR, pertimbangkan untuk mengatur panjang maksimum menjadi 256 byte atau lebih guna menghindari kebutuhan menggunakan algoritma COPY saat memperpanjang kolom.

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

PolarDB for MySQL 5.6

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Tambahkan kolom

Ya

Tidak¹

Ya¹

Tidak didukung

Hapus kolom

Ya

Ya

Tidak

Tidak didukung

Mengganti nama kolom

Ya

Tidak

Ya

Tidak berlaku

Atur ulang kolom

Ya

Ya

Tidak

Tidak didukung

Menetapkan nilai default kolom

Ya

Tidak

Ya

Tidak berlaku

Ubah komentar kolom

Ya

Tidak

Ya

Tidak berlaku

Memodifikasi tipe kolom

Tidak

Ya

Tidak

Tidak didukung

Memperpanjang panjang VARCHAR

Tidak

Ya

Tidak

Tidak didukung

Ubah set karakter dari UTF8mb3 ke UTF8mb4

Tidak

Ya

Tidak

Tidak didukung

Menghapus nilai default kolom

Ya

Tidak

Ya

Tidak berlaku

Ubah nilai auto-increment

Ya

Tidak

Ya

Tidak berlaku

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

Ya²

Tidak berlaku

  1. Untuk mengaktifkan fitur instant ADD COLUMN, Anda harus mengatur parameter loose_innodb_support_instant_add_column ke ON. Anda hanya dapat menambahkan kolom di akhir tabel. Jika tabel tidak memiliki kunci primer yang ditentukan, Anda harus mengatur parameter implicit_primary_key ke OFF untuk mencegah operasi penambahan kolom gagal karena adanya kolom kunci primer implisit di akhir tabel. Selain itu, fitur instant ADD COLUMN tidak didukung pada tabel terkompresi (ROW_FORMAT=COMPRESSED), tabel dengan indeks teks penuh, tabel sementara, atau tabel partisi. Jika kluster tidak mendukung fitur instant ADD COLUMN, sistem akan menambahkan kolom menggunakan algoritma INPLACE, yang memicu pembangunan ulang tabel. Selama proses tersebut, operasi baca dan tulis konkuren diizinkan.

    Catatan

    Fitur instant add column untuk PolarDB for MySQL 5.6 saat ini berada dalam rilis canary. Untuk menggunakan fitur ini, buka Pusat Kuota, temukan nama kuota menggunakan Quota ID polardb_mysql_iac_56, lalu klik Apply di kolom Tindakan untuk mengaktifkannya.

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

Operasi tabel

PolarDB for MySQL 8.0.2

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Memodifikasi ROW_FORMAT

Ya

Ya

Tidak

Dukungan

Memodifikasi KEY_BLOCK_SIZE

Ya

Ya

Tidak

Didukung

Menetapkan informasi statistik persisten

Ya

Tidak

Ya

Tidak berlaku

Mendeklarasikan set karakter

Ya

Tidak

Ya

Tidak berlaku

Mengonversi set karakter

Tidak

Ya

Tidak

Tidak didukung

Optimalkan tabel

Ya

Ya

Catatan

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

Tidak

Didukung

Bangun ulang tabel

Ya

Ya

Tidak

Didukung

Ganti nama tabel

Ya

Tidak

Ya

Tidak berlaku

Ubah komentar tabel

Ya

Tidak

Ya

Tidak berlaku

PolarDB for MySQL 8.0.1

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Memodifikasi ROW_FORMAT

Ya

Ya

Tidak

Didukung

Memodifikasi KEY_BLOCK_SIZE

Ya

Ya

Tidak

Didukung

Menetapkan informasi statistik persisten

Ya

Tidak

Ya

Tidak berlaku

Mendeklarasikan set karakter

Ya

Tidak

Ya

Tidak berlaku

Mengonversi set karakter

Tidak

Ya

Tidak

Tidak didukung

Optimalkan tabel

Ya

Ya

Catatan

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

Tidak

Didukung

Bangun ulang tabel

Ya

Ya

Tidak

Didukung

Ganti nama tabel

Ya

Tidak

Ya

Tidak berlaku

Ubah komentar tabel

Ya

Tidak

Ya

Tidak berlaku

PolarDB for MySQL 5.7

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Memodifikasi ROW_FORMAT

Ya

Ya

Tidak

Didukung

Memodifikasi KEY_BLOCK_SIZE

Ya

Ya

Tidak

Dukungan

Menetapkan informasi statistik persisten

Ya

Tidak

Ya

Tidak berlaku

Mendeklarasikan set karakter

Ya

Tidak

Ya

Tidak berlaku

Mengonversi set karakter

Tidak

Ya

Tidak

Tidak didukung

Mengoptimalkan tabel

Ya

Ya

Catatan

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

Tidak

Didukung

Membangun ulang sebuah tabel

Ya

Ya

Tidak

Didukung

Mengganti nama tabel

Ya

Tidak

Ya

Tidak berlaku

Ubah komentar tabel

Ya

Tidak

Ya

Tidak berlaku

PolarDB for MySQL 5.6

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Memodifikasi ROW_FORMAT

Ya

Ya

Tidak

Tidak didukung

Memodifikasi KEY_BLOCK_SIZE

Ya

Ya

Tidak

Tidak didukung

Menetapkan informasi statistik persisten

Ya

Tidak

Ya

Tidak berlaku

Mendeklarasikan set karakter

Ya

Tidak

Ya

Tidak berlaku

Mengonversi set karakter

Tidak

Ya

Tidak

Tidak didukung

Optimalkan tabel

Ya

Ya

Catatan

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

Tidak

Tidak didukung

Bangun ulang tabel

Ya

Ya

Tidak

Tidak didukung

Ganti nama tabel

Ya

Tidak

Ya

Tidak berlaku

Ubah komentar tabel

Ya

Tidak

Ya

Tidak berlaku

Operasi kolom yang dihasilkan

PolarDB for MySQL 8.0.2

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Tambahkan kolom STORED

Tidak

Catatan

Karena penambahan ekspresi Kolom Tersimpan melibatkan lapisan SQL/Server, DDL Online tidak didukung saat menambahkan Kolom Tersimpan.

Ya

Tidak

Tidak didukung

Mengubah urutan kolom STORED

Tidak

Ya

Tidak

Tidak didukung

Menghapus kolom STORED

Ya

Ya

Tidak

Didukung

Tambahkan kolom VIRTUAL

Ya

Tidak

Ya

Tidak berlaku

Mengubah urutan kolom VIRTUAL

Tidak

Ya

Tidak

Tidak didukung

Menghapus kolom VIRTUAL

Ya

Tidak

Ya

Tidak berlaku

PolarDB for MySQL 8.0.1

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Tambahkan kolom STORED

Tidak

Catatan

Karena penambahan ekspresi Kolom Tersimpan melibatkan lapisan SQL/Server, DDL Online tidak didukung saat menambahkan Kolom Tersimpan.

Ya

Tidak

Tidak didukung

Mengubah urutan kolom STORED

Tidak

Ya

Tidak

Tidak didukung

Menghapus kolom STORED

Ya

Ya

Tidak

Didukung

Tambahkan kolom VIRTUAL

Ya

Tidak

Ya

Tidak berlaku

Mengubah urutan kolom VIRTUAL

Tidak

Ya

Tidak

Tidak didukung

Menghapus kolom VIRTUAL

Ya

Tidak

Ya

Tidak berlaku

PolarDB for MySQL 5.7

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Tambahkan kolom STORED

Tidak

Catatan

Karena penambahan ekspresi Kolom Tersimpan melibatkan lapisan SQL/Server, DDL Online tidak didukung saat menambahkan Kolom Tersimpan.

Ya

Tidak

Tidak didukung

Mengubah urutan kolom STORED

Tidak

Ya

Tidak

Tidak didukung

Menghapus kolom STORED

Ya

Ya

Tidak

Didukung

Tambahkan kolom VIRTUAL

Ya

Tidak

Ya

Tidak berlaku

Mengubah urutan kolom VIRTUAL

Tidak

Ya

Tidak

Tidak didukung

Menghapus kolom VIRTUAL

Ya

Tidak

Ya

Tidak berlaku

PolarDB for MySQL 5.6

PolarDB for MySQL 5.6 tidak mendukung fitur Kolom Terhasil.

Operasi kunci asing

PolarDB for MySQL 8.0.2

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Tambahkan kunci asing

Ya¹

Tidak¹

Ya¹

Tidak berlaku

Menghapus kunci asing

Ya¹

Tidak¹

Ya¹

Tidak berlaku

PolarDB for MySQL 8.0.1

Operasi

Mengizinkan DML konkuren

Memperbarui tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Tambahkan kunci asing

Ya¹

Tidak¹

Ya¹

Tidak berlaku

Menghapus kunci asing

Ya¹

Tidak¹

Ya¹

Tidak berlaku

PolarDB for MySQL 5.7

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Tambahkan kunci asing

Ya¹

Tidak¹

Ya¹

Tidak berlaku

Menghapus kunci asing

Ya¹

Tidak¹

Ya¹

Tidak berlaku

PolarDB for MySQL 5.6

Operasi

Mengizinkan DML konkuren

Memperbarui tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Tambahkan kunci asing

Ya¹

Tidak¹

Ya¹

Tidak berlaku

Menghapus kunci asing

Ya¹

Tidak¹

Ya¹

Tidak berlaku

DDL INPLACE hanya didukung ketika foreign_key_checks dinonaktifkan dan hanya metadata yang dimodifikasi. Jika tidak, hanya DDL COPY yang didukung, dan tabel dikunci selama durasi penuh.

Operasi tabel partisi

PolarDB for MySQL 8.0.2

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Tambahkan partisi (ADD)

Ya¹

Nomor²

Ya

Tidak didukung

Menghapus partisi (DROP)

Ya¹

Tidak²

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

Mengatur ulang partisi (REORGANIZE)

Ya¹

No. 7

Tidak

Tidak didukung

Menukar partisi (EXCHANGE)

Ya¹

Tidak

Ya

Tidak didukung

Menganalisis partisi (ANALYZE)

Ya

Tidak

Tidak⁸

Tidak didukung

Memeriksa partisi (CHECK)

Ya

Tidak

Nomor⁹

Tidak didukung

Mengoptimalkan partisi (OPTIMIZE)

Ya⁴

Ya⁴

Tidak

Didukung⁴

Membangun ulang partisi (REBUILD)

Ya¹

Tidak⁷

Tidak

Tidak didukung

Memperbaiki partisi (REPAIR)

Ya

Tidak¹⁰

Tidak

Tidak didukung

Mengonversi tabel menjadi tabel partisi

Tidak

Ya

Ya⁵

Tidak didukung

Mengonversi tabel partisi menjadi tabel standar

Tidak

Ya

Tidak

Tidak didukung

Buat indeks parsial

Ya

Tidak⁶

Tidak

Didukung

  1. Kunci metadata tingkat partisi (MDL) memastikan bahwa setelah Anda mengatur parameter loose_partition_level_mdl_enabled ke true, operasi DDL tidak memengaruhi DML pada partisi yang tidak terpengaruh. Untuk informasi selengkapnya, lihat Pemeliharaan Partisi Online.

  2. Menambahkan atau menghapus partisi untuk tabel partisi RANGE dan LIST tidak memerlukan pembangunan ulang tabel. Menambahkan partisi ke tabel partisi HASH dan KEY memerlukan pembangunan ulang tabel. Menghapus partisi dari tabel partisi HASH dan KEY tidak didukung.

  3. Hanya partisi HASH dan KEY yang didukung.

  4. Saat Anda mengeksekusi operasi OPTIMIZE PARTITION pada tabel yang menggunakan engine InnoDB, seluruh tabel partisi dibangun ulang. Operasi baca dan tulis diizinkan pada tabel target selama pembangunan ulang. Dalam kasus ini, Anda dapat mengatur parameter innodb_parallel_build_primary_index ke ON untuk menggunakan fitur DDL paralel guna mempercepat pembangunan ulang.

  5. Konversi instan hanya mendukung konversi cepat tabel standar menjadi tabel partisi rentang.

  6. PolarDB for MySQL mendukung pembuatan dan penghapusan indeks tingkat partisi. Untuk informasi selengkapnya, lihat Indeks Parsial.

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

  8. Menganalisis partisi hanya memodifikasi informasi statistik, bukan 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

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Menambahkan partisi (ADD)

Tidak

Tidak¹

Ya

Tidak didukung

Menghapus partisi (DROP)

Tidak

No²

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

Mengatur ulang partisi (REORGANIZE)

Tidak

Tidak⁴

Tidak

Tidak didukung

Menukar partisi (EXCHANGE)

Ya

Ya

Ya

Tidak didukung

Menganalisis partisi (ANALYZE)

Ya

Ya

Tidak⁵

Tidak didukung

Memeriksa partisi (CHECK)

Ya

Tidak

No. 6

Tidak didukung

Mengoptimalkan partisi (OPTIMIZE)

Ya³

Ya³

Tidak

Didukung³

Membangun ulang partisi (REBUILD)

Tidak

Tidak⁴

Tidak

Tidak didukung

Memperbaiki partisi (REPAIR)

Ya

Tidak⁴

Tidak

Tidak didukung

Mengonversi tabel menjadi tabel partisi

Tidak

Ya

Tidak

Tidak didukung

Mengonversi tabel partisi menjadi tabel standar

Tidak

Ya

Tidak

Tidak didukung

  1. Menambahkan partisi ke tabel partisi RANGE dan LIST tidak memerlukan pembangunan ulang tabel. Menambahkan partisi ke tabel partisi HASH dan KEY memerlukan pembangunan ulang tabel.

  2. Menghapus partisi dari tabel partisi HASH dan KEY tidak didukung.

  3. Saat Anda mengeksekusi operasi OPTIMIZE PARTITION pada tabel yang menggunakan engine InnoDB, seluruh tabel partisi dibangun ulang. Operasi baca dan tulis diizinkan pada tabel target selama pembangunan ulang. Anda dapat mengatur parameter innodb_parallel_build_primary_index ke ON untuk menggunakan fitur DDL paralel guna mempercepat pembangunan ulang.

  4. Mengatur ulang, membangun ulang, dan memperbaiki partisi hanya membangun ulang partisi yang ditentukan yang memerlukan pengaturan ulang, pembangunan ulang, atau perbaikan. Partisi lain tidak terpengaruh.

  5. Menganalisis partisi hanya memodifikasi informasi statistik, bukan metadata atau data tabel.

  6. Memeriksa partisi tidak memodifikasi metadata atau data.

PolarDB for MySQL 5.7

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Menambahkan partisi (ADD)

Tidak

Tidak¹

Ya

Tidak didukung

Menghapus partisi (DROP)

Tidak

Tidak¹

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

Mengatur ulang partisi (REORGANIZE)

Tidak

Tidak²

Tidak

Tidak didukung

Menukar partisi

Ya

Tidak

Ya

Tidak didukung

Menganalisis partisi (ANALYZE)

Ya

Tidak

Tidak³

Tidak didukung

Memeriksa partisi (CHECK)

Ya

Tidak

Tidak⁴

Tidak didukung

Mengoptimalkan partisi (OPTIMIZE)

Tidak

Ya

Tidak

Tidak didukung

Membangun ulang partisi (REBUILD)

Tidak

Tidak²

Tidak

Tidak didukung

Memperbaiki partisi (REPAIR)

Ya

Nomor²

Tidak

Tidak didukung

Mengonversi tabel menjadi tabel partisi

Tidak

Ya

Tidak

Tidak didukung

Mengonversi tabel partisi menjadi tabel standar

Tidak

Ya

Tidak

Tidak didukung

  1. Menambahkan atau menghapus partisi untuk tabel partisi RANGE dan LIST tidak memerlukan pembangunan ulang tabel. Menambahkan partisi ke tabel partisi HASH dan KEY memerlukan pembangunan ulang tabel. Menghapus partisi dari tabel partisi HASH dan KEY tidak didukung.

  2. Mengatur ulang, membangun ulang, dan memperbaiki partisi hanya membangun ulang partisi yang ditentukan yang memerlukan pengaturan ulang, pembangunan ulang, atau perbaikan. Partisi lain tidak terpengaruh.

  3. Menganalisis partisi hanya memodifikasi informasi statistik, bukan metadata atau data tabel.

  4. Memeriksa partisi tidak memodifikasi metadata atau data.

PolarDB for MySQL 5.6

Operasi

Mengizinkan DML konkuren

Membangun ulang tabel

Hanya memodifikasi metadata

Mendukung DDL paralel

Menambahkan partisi (ADD)

Tidak

Tidak¹

Ya

Tidak didukung

Menghapus partisi (DROP)

Tidak

Tidak¹

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

Mengatur ulang partisi (REORGANIZE)

Tidak

Tidak²

Tidak

Tidak didukung

Menukar partisi (EXCHANGE)

Ya

Tidak

Ya

Tidak didukung

Menganalisis partisi (ANALYZE)

Ya

Tidak

Tidak³

Tidak didukung

Memeriksa partisi (CHECK)

Ya

Tidak

Tidak⁴

Tidak didukung

Mengoptimalkan partisi (OPTIMIZE)

Tidak

Ya

Tidak

Tidak didukung

Membangun ulang partisi (REBUILD)

Tidak

No²

Tidak

Tidak didukung

Memperbaiki partisi (REPAIR)

Ya

Tidak²

Tidak

Tidak didukung

Mengonversi tabel menjadi tabel partisi

Tidak

Ya

Tidak

Tidak didukung

Mengonversi tabel partisi menjadi tabel standar

Tidak

Ya

Tidak

Tidak didukung

  1. Menambahkan atau menghapus partisi untuk tabel partisi RANGE dan LIST tidak memerlukan pembangunan ulang tabel. Menambahkan partisi ke tabel partisi HASH dan KEY memerlukan pembangunan ulang tabel. Menghapus partisi dari tabel partisi HASH dan KEY tidak didukung.

  2. Mengatur ulang, membangun ulang, dan memperbaiki partisi hanya membangun ulang partisi yang ditentukan yang memerlukan pengaturan ulang, pembangunan ulang, atau perbaikan. Partisi lain tidak terpengaruh.

  3. Menganalisis partisi hanya memodifikasi informasi statistik, bukan 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 mengeksekusi operasi DDL, kami merekomendasikan Anda menggunakan metode kernel (Online DDL). Metode ini cepat dan stabil.

  • Saat PolarDB for MySQL menggunakan algoritma COPY untuk mengeksekusi operasi DDL, tabel dikunci selama durasi penuh. Operasi baca dan tulis pada tabel target diblokir selama eksekusi. Dalam kasus ini, Anda dapat menggunakan DDL bebas penguncian di DMS atau alat pihak ketiga seperti gh-ost untuk mengeksekusi pernyataan DDL. Alat pihak ketiga ini mengizinkan operasi baca dan tulis selama eksekusi DDL, tetapi biasanya lebih lambat. Dalam skenario tabel besar atau konkurensi tinggi, operasi mungkin gagal karena data inkremental yang berlebihan.

Tabel berikut membandingkan perbedaan antara penggunaan metode kernel dan alat pihak ketiga untuk mengeksekusi operasi DDL:

Metode eksekusi

Mengizinkan baca dan tulis konkuren

Kecepatan eksekusi

Apakah pencatatan biner diperlukan?

Akselerasi paralel

Kernel (Online DDL)

Ya

Cepat

Tidak

Didukung

Alat pihak ketiga (seperti DDL bebas penguncian di DMS dan gh-ost)

Ya

Lambat

Ya

Tidak didukung

Catatan

Bahkan saat Anda menggunakan alat pihak ketiga untuk melakukan operasi DDL, kunci MDL-X diperoleh selama pergantian tabel (modifikasi metadata), yang sementara mengunci tabel. Untuk mengatasi masalah penguncian tabel ini, Anda dapat mengaktifkan fitur DDL nonblocking atau fitur DDL preemptif, berdasarkan kebutuhan Anda.

Hubungi kami

Jika Anda memiliki pertanyaan tentang operasi DDL, silakan hubungi dukungan teknis.