All Products
Search
Document Center

ApsaraDB RDS:Penambahan kolom instan

Last Updated:May 13, 2026

Fitur Instant ADD COLUMN pada ApsaraDB RDS for MySQL memungkinkan penambahan kolom secara cepat hanya dengan memodifikasi metadata. Metode ini menghindari pembangunan ulang tabel secara penuh, menyelesaikan operasi dalam hitungan detik terlepas dari ukuran tabel, serta menggunakan sumber daya sistem yang minimal. Fitur ini tidak mengunci tabel atau mengganggu operasi bisnis, sehingga ideal untuk skenario yang memerlukan ekstensi skema secara berkala dan kelangsungan bisnis tingkat tinggi.

Cara kerja

Instant ADD COLUMN pada ApsaraDB RDS for MySQL mengoptimalkan operasi ADD COLUMN dengan memodifikasi metadata di kamus data. Fitur ini menghindari penyalinan data penuh atau pembangunan ulang tabel yang biasanya diperlukan oleh operasi DDL tradisional, serta menambahkan kolom dalam hitungan detik, terlepas dari ukuran tabel.

Tabel berikut membandingkan keunggulan utama Instant ADD COLUMN dibandingkan metode tradisional.

Item perbandingan

Metode tradisional (algoritma COPY atau INPLACE)

Penambahan kolom instan (algoritma INSTANT)

Waktu penambahan kolom

Memerlukan pembangunan ulang tabel secara penuh, yang memakan waktu sebanding dengan ukuran tabel.

Hanya memodifikasi metadata, sehingga operasi selesai dalam hitungan detik.

Konsumsi resource

Sementara waktu mengonsumsi sumber daya sistem yang signifikan, seperti I/O dan memori.

Mengonsumsi tambahan sumber daya yang dapat diabaikan.

Dampak terhadap bisnis

Berpotensi menghambat operasi online selama transaksi jangka panjang atau dalam skenario konkurensi tinggi.

Tidak menyebabkan penguncian atau penghambatan tabel.

Batasan ukuran tabel

Lambat saat menambahkan kolom ke tabel besar.

Menambahkan kolom secara cepat ke tabel dengan ukuran apa pun.

Prasyarat

Untuk menggunakan fitur Instant ADD COLUMN, instans Anda harus memenuhi persyaratan versi berikut. Jika versi mesin minor Anda tidak didukung, Anda dapat memperbarui versi mesin minor.

  • MySQL 8.4

  • MySQL 8.0

  • MySQL 5.7 dengan versi mesin minor 20250331 atau lebih baru.

Batasan berikut berlaku saat Anda menggunakan fitur Instant ADD COLUMN:

  • Batasan engine: Hanya engine InnoDB yang didukung.

  • Batasan jenis tabel: Tabel terkompresi, tabel dengan indeks teks penuh, dan tabel temporary tidak didukung.

  • Batasan operasi: Anda tidak dapat menggabungkan beberapa operasi dalam satu pernyataan, seperti menambahkan kolom dan membuat indeks sekaligus.

  • Batasan instansi hanya baca: Jika Anda menggunakan Instant ADD COLUMN pada instans utama berkeandalan tinggi yang memiliki instansi hanya baca, Anda harus mengatur parameter loose_innodb_instant_ddl_enabled ke ON baik pada instans utama maupun semua instansi hanya bacanya. Jika tidak, replikasi ke instansi hanya baca akan terputus.

  • Posisi default kolom:

    Versi MySQL

    Versi mesin minor

    Posisi kolom

    5.7

    20250331 atau lebih baru

    Kolom baru ditambahkan sebagai kolom terakhir secara default.

    8.0

    Sebelum 20230630

    Kolom baru ditambahkan sebagai kolom terakhir secara default.

    20230630 atau lebih baru

    Anda dapat menentukan posisi kolom baru.

    8.4

    Versi mesin minor apa pun

    Anda dapat menentukan posisi kolom baru.

  • Saat menggunakan Instant ADD COLUMN untuk instans dengan versi berikut, Anda harus memastikan bahwa tabel data tidak mengandung kunci primer implisit:

    • MySQL 8.4

    • MySQL 8.0 dengan versi mesin minor sebelum 20230630

    • MySQL 5.7

Aktifkan penambahan kolom instan

MySQL 8.0 dan 8.4 telah mengaktifkan Instant ADD COLUMN secara default. Anda dapat langsung menggunakan fitur ini tanpa mengubah parameter apa pun. Untuk MySQL 5.7, ikuti langkah-langkah berikut untuk mengaktifkan Instant ADD COLUMN:

  1. Buka halaman Instances, pilih wilayah, lalu klik ID instans target.

  2. Di panel navigasi sebelah kiri, klik Parameters.

  3. Di tab Editable Parameters, temukan parameter loose_innodb_instant_ddl_enabled. Pada kolom Running Parameter Value, atur nilainya menjadi ON.

    Catatan

    Perubahan pada parameter loose_innodb_instant_ddl_enabled berlaku langsung tanpa perlu restart instans.

  4. Klik Apply Changes. Pada kotak dialog yang muncul, tentukan kapan perubahan akan diterapkan, lalu klik OK.

Operasi terkait

Gunakan penambahan kolom instan

  • Gunakan ALGORITHM=INSTANT untuk secara eksplisit mengaktifkan Instant ADD COLUMN:

    ALTER TABLE <table_name> ADD COLUMN <column_name> <data_type> <constraints>, ALGORITHM = INSTANT;
  • Jika Anda tidak menentukan klausa ALGORITHM, ApsaraDB RDS for MySQL akan memilih algoritma optimal pada waktu proses:

    ALTER TABLE <table_name> ADD COLUMN <column_name> <data_type> <constraints>;

Lihat tabel yang telah dimodifikasi

  • MySQL 5.7:

    SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE INSTANT_COLS > 0;
  • MySQL 8.0 dan 8.4:

    -- Untuk versi mesin minor sebelum 20230630
    SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE INSTANT_COLS > 0;
    
    -- Untuk versi mesin minor 20230630 dan seterusnya
    SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE TOTAL_ROW_VERSIONS > 0;

Lihat kolom yang telah ditambahkan

  • MySQL 5.7:

    Pada MySQL 5.7, tabel INNODB_SYS_INSTANT_COLUMNS ditambahkan ke database INFORMATION_SCHEMA. Anda dapat menjalankan pernyataan SQL berikut untuk melihat kolom yang ditambahkan menggunakan fitur Instant ADD COLUMN.

    SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INSTANT_COLUMNS WHERE TABLE_ID = 
    (SELECT TABLE_ID FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME = "<database_name>/<table_name>");
  • MySQL 8.0 dan 8.4:

    Jalankan pernyataan SQL berikut untuk melihat informasi kolom suatu tabel. Nilai 1 pada kolom HAS_DEFAULT menunjukkan bahwa kolom tersebut ditambahkan menggunakan fitur Instant ADD COLUMN.

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

FAQ

Q1: Instans saya memenuhi persyaratan untuk Instant ADD COLUMN, tetapi saya tetap menerima error berikut saat mencoba menambahkan kolom: "Feature not supported: 1845 ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=COPY/INPLACE"

A:

Penyebab: Jika suatu tabel tidak memiliki kunci primer atau kunci unik, ApsaraDB RDS for MySQL akan menambahkan kunci primer implisit di akhir tabel untuk memastikan efisiensi replikasi. Hal ini secara efektif mengubah pernyataan ADD COLUMN menjadi operasi berbasis posisi, karena kunci primer implisit harus tetap berada di kolom terakhir. Namun, instans MySQL 5.7 dan MySQL 8.0 dengan versi mesin minor sebelum 20230630 tidak mendukung penambahan kolom berbasis posisi dengan ALGORITHM=INSTANT. Konflik ini menyebabkan error tersebut.

Solusi: Saat menggunakan Instant ADD COLUMN pada instans MySQL 5.7 atau MySQL 8.0 dengan versi mesin minor sebelum 20230630, pastikan tabel target tidak memiliki kunci primer implisit.