All Products
Search
Document Center

PolarDB:Penambahan kolom instan di akhir tabel

Last Updated:Mar 14, 2026

Secara tradisional, penambahan kolom memerlukan pembangunan ulang seluruh tabel, yang mengonsumsi sumber daya sistem secara signifikan. Kluster PolarDB for MySQL mendukung penambahan kolom instan, sehingga Anda dapat menambahkan kolom ke tabel berukuran apa pun dalam hitungan detik.

Fitur penambahan kolom instan menggunakan algoritma INSTANT untuk menjalankan operasi DDL. Fitur ini hanya memodifikasi metadata di kamus data tanpa memodifikasi atau menyalin data historis serta tidak membangun ulang tabel. Oleh karena itu, proses ini tidak bergantung pada ukuran tabel dan seluruh operasi DDL selesai dalam hitungan detik.

Versi yang didukung

Kluster Anda harus menjalankan salah satu versi berikut:

  • PolarDB for MySQL 5.6 dengan revisi 5.6.1.0.43 atau lebih baru.

    Catatan

    Fitur penambahan kolom instan untuk PolarDB for MySQL 5.6 sedang dalam rilis canary. Untuk menggunakannya, buka Quota Center. Temukan kuota bernama polardb_mysql_iac_56, lalu klik Request pada kolom Actions.

  • PolarDB for MySQL 5.7 dengan revisi 5.7.1.0.6 atau lebih baru.

    Catatan

    Anda harus mengaktifkan parameter loose_innodb_support_instant_add_column sebelum dapat menggunakan fitur ini pada kluster PolarDB for MySQL 5.7.

  • PolarDB for MySQL 8.0.

    Catatan

    Kluster PolarDB for MySQL 8.0 mendukung penambahan kolom instan secara default. Tidak diperlukan konfigurasi parameter.

Anda dapat memeriksa nomor revisi kluster Anda. Untuk informasi selengkapnya, lihat memeriksa nomor versi.

Batasan

  • Anda hanya dapat menambahkan kolom sebagai kolom terakhir dalam tabel.

  • Menambahkan kolom virtual:

    • PolarDB for MySQL 5.6 dan 5.7: Tidak didukung.

    • PolarDB for MySQL 8.0: Didukung.

  • Menambahkan bidang ke tabel partisi dalam hitungan detik.

    • PolarDB for MySQL 5.6: Tidak didukung.

    • PolarDB for MySQL 5.7 dan 8.0: Didukung.

      Catatan

      Fitur penambahan kolom instan untuk tabel partisi di PolarDB for MySQL 5.7 sedang dalam rilis canary. Untuk menggunakannya, buka Quota Center. Temukan kuota bernama polarM_57_iac_on_partition_table, lalu klik Request pada kolom Actions.

  • Indeks teks lengkap tidak didukung untuk tabel.

  • Tabel dengan ROW_FORMAT yang diatur ke COMPRESSED tidak didukung.

  • Anda dapat menambahkan kolom secara instan ke tabel yang memiliki Indeks Kolom dalam Memori (IMCI), tetapi hanya jika kondisi berikut terpenuhi:

    • Untuk PolarDB for MySQL 8.0.1.1.42 dan versi sebelumnya, atau 8.0.2.2.23 dan versi sebelumnya: Atur parameter imci_enable_add_column_instant_ddl ke ON. Saat diaktifkan, penambahan kolom instan akan memicu pembangunan ulang IMCI diam-diam di latar belakang. Selama proses pembangunan ulang, IMCI tidak tersedia.

    • Untuk PolarDB for MySQL 8.0.1.1.42 dan versi setelahnya, atau 8.0.2.2.23 dan versi setelahnya: Atur parameter imci_enable_add_column_instant_ddl ke OFF.

  • Tabel yang memiliki opsi implicit_primary_key yang diaktifkan memerlukan kunci primary kustom.

  • Anda tidak dapat menggabungkan penambahan kolom instan dengan operasi DDL lain—seperti menambahkan indeks—dalam satu pernyataan SQL yang sama.

Cara menggunakan

Pengaturan parameter

  • PolarDB for MySQL kluster 5.6 dan 5.7: Aktifkan parameter loose_innodb_support_instant_add_column untuk menggunakan penambahan kolom instan. Untuk petunjuknya, lihat Aktifkan parameter.

    Parameter

    Level

    Deskripsi

    loose_innodb_support_instant_add_column

    Global

    Mengaktifkan atau menonaktifkan penambahan kolom instan. Nilai yang valid:

    1. ON: Mengaktifkan penambahan kolom instan.

    2. OFF (default): Menonaktifkan penambahan kolom instan.

  • PolarDB for MySQL kluster 8.0: Anda dapat menggunakan penambahan kolom instan tanpa mengonfigurasi parameter apa pun.

Sintaksis

  • Paksa penambahan kolom instan dengan menentukan ALGORITHM=INSTANT. Contoh:

    ALTER TABLE <table_name> ADD COLUMN <column_name> int, ALGORITHM=INSTANT;
    Catatan

    Jika pernyataan ini mengembalikan ERROR 0A000: ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=COPY/INPLACE., artinya penambahan kolom instan tidak didukung untuk operasi ini. Periksa apakah parameter loose_innodb_support_instant_add_column telah diaktifkan, lalu tinjau bagian Batasan.

  • Abaikan klausa ALGORITHM atau tentukan ALGORITHM=DEFAULT. PolarDB secara otomatis memilih algoritma tercepat. Contoh:

    ALTER TABLE <table_name> ADD COLUMN <column_name> int, ALGORITHM=DEFAULT;
    ALTER TABLE <table_name> ADD COLUMN <column_name> int;
    Catatan

    PolarDB memilih algoritma dalam urutan berikut: INSTANT > INPLACE > COPY.

Lihat informasi kolom yang ditambahkan menggunakan algoritma INSTANT

  • PolarDB for MySQL kluster 5.6 dan 5.7: Tabel baru bernama INNODB_SYS_INSTANT_COLUMNS muncul di database INFORMATION_SCHEMA. Tabel ini menyimpan detail tentang kolom yang ditambahkan menggunakan algoritma INSTANT, seperti nama kolom, nomor ordinal, dan nilai default (disimpan dalam format biner). Anda dapat menjalankan pernyataan berikut untuk melihat detailnya:

    SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INSTANT_COLUMNS;
    Catatan

    Setelah Anda menggunakan algoritma INSTANT untuk menambahkan kolom ke tabel target, jika Anda menjalankan operasi DDL yang memicu pembangunan ulang tabel (seperti OPTIMIZE TABLE), tabel tersebut akan dibangun ulang secara fisik. Selama proses ini, kolom INSTANT asli secara otomatis dikonversi menjadi kolom biasa, dan datanya sepenuhnya dipertahankan di tabel baru. Karena kolom-kolom tersebut tidak lagi mendukung algoritma INSTANT, catatan yang sesuai di tabel sistem INNODB_SYS_INSTANT_COLUMNS akan dihapus.

  • PolarDB for MySQL kluster 8.0: Anda dapat menjalankan pernyataan berikut untuk melihat detail kolom. Jika kolom has_default menampilkan nilai 1, berarti kolom tersebut ditambahkan menggunakan algoritma INSTANT.

    SELECT * FROM INFORMATION_SCHEMA.INNODB_COLUMNS WHERE TABLE_ID = (SELECT TABLE_ID FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE NAME = "<database_name>/<table_name>");

Hubungi kami

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