All Products
Search
Document Center

ApsaraDB RDS:Instant ADD COLUMN

Last Updated:Feb 07, 2026

RDS for MySQL mendukung Instant ADD COLUMN, yaitu fitur yang memungkinkan penambahan kolom dalam hitungan detik hanya dengan memodifikasi metadata. Fitur ini menghindari pembangunan ulang tabel secara penuh dan berfungsi terlepas dari ukuran tabel. Instant ADD COLUMN hampir tidak mengonsumsi sumber daya sistem tambahan, tidak mengunci tabel, serta tidak memblokir operasi. Gunakan fitur ini jika Anda sering memperluas skema tabel dan memerlukan kelangsungan bisnis yang tinggi.

Deskripsi fitur

RDS for MySQL mendukung Instant ADD COLUMN untuk mengoptimalkan operasi ADD COLUMN. Alih-alih mengubah atau membangun ulang seluruh data tabel, fitur ini hanya memodifikasi metadata di kamus data. Dengan demikian, Anda dapat menambahkan kolom dalam hitungan detik, terlepas dari ukuran tabel.

Tabel berikut membandingkan Instant ADD COLUMN dengan penambahan kolom tradisional.

Item perbandingan

Penambahan kolom tradisional (mode COPY atau INPLACE)

RDS Instant ADD COLUMN (mode INSTANT)

Waktu penambahan kolom

Memerlukan pembangunan ulang tabel secara penuh. Waktu meningkat seiring ukuran tabel.

Hanya memodifikasi metadata. Selesai dalam hitungan detik.

Konsumsi resource

Sementara menggunakan jumlah besar sumber daya sistem, seperti I/O dan memori.

Hampir tidak menggunakan sumber daya tambahan.

Dampak bisnis

Dapat memblokir beban kerja online selama transaksi jangka panjang atau dalam kondisi konkurensi tinggi.

Tidak mengunci tabel atau memblokir operasi.

Batas ukuran tabel

Penambahan kolom cepat tidak didukung untuk tabel besar.

Berfungsi pada tabel dengan ukuran apa pun.

Cakupan penerapan

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

  • MySQL 8.0: Semua versi mesin minor didukung.

  • MySQL 5.7: Versi mesin minor harus 20250331 atau lebih baru.

Instant ADD COLUMN memiliki batasan berikut:

  • Engine: Hanya engine InnoDB yang didukung.

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

  • Operasi: Beberapa operasi tidak dapat digabungkan. Misalnya, Anda tidak dapat membuat indeks sekaligus menambahkan kolom.

  • Instansi hanya baca: Jika instans primary Anda menggunakan ketersediaan tinggi dan memiliki instansi hanya baca yang tersambung, atur loose_innodb_instant_ddl_enabled ke ON baik di instans primary maupun instansi hanya baca. Jika tidak, replikasi mungkin berhenti di instansi hanya baca.

  • Posisi kolom default:

    Versi MySQL

    Minor Engine Version

    Posisi kolom

    5.7

    20250331 atau lebih baru

    Secara default, kolom terakhir dipilih.

    8.0

    Lebih awal dari 20230630

    Secara default, kolom baru ditempatkan sebagai kolom terakhir.

    20230630 atau lebih baru

    Anda dapat menentukan posisi kolom baru.

  • Untuk MySQL 5.7 atau MySQL 8.0 (versi lebih awal dari 20230630), pastikan tidak ada kunci primer implisit di dalam tabel.

Aktifkan Instant ADD COLUMN

MySQL 8.0 mengaktifkan Instant ADD COLUMN secara default. Anda tidak perlu mengubah parameter apa pun. Untuk MySQL 5.7, ikuti langkah-langkah berikut:

  1. Buka halaman RDS Instances. Pilih Wilayah tempat instans Anda berada, lalu klik ID instans target Anda.

  2. Pada panel navigasi di sebelah kiri, klik Parameters.

  3. Pada tab Modifiable Parameters, cari loose_innodb_instant_ddl_enabled. Pada kolom Running Value, atur nilainya menjadi ON.

    Catatan

    Mengubah loose_innodb_instant_ddl_enabled langsung berlaku. Tidak diperlukan restart.

  4. Klik Apply Changes. Pada kotak dialog, pilih kapan perubahan harus diterapkan, lalu klik OK.

Operasi terkait

Gunakan Instant ADD COLUMN

  • Paksa penggunaan Instant ADD COLUMN dengan menentukan ALGORITHM=INSTANT:

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

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

Lihat tabel yang menggunakan Instant ADD COLUMN

  • MySQL 5.7:

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

    -- Versi mesin minor lebih awal dari 20230630
    SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE INSTANT_COLS > 0;
    
    -- Versi mesin minor 20230630 atau lebih baru
    SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE TOTAL_ROW_VERSIONS > 0;

Lihat kolom yang ditambahkan oleh Instant ADD COLUMN

  • MySQL 5.7:

    MySQL 5.7 menambahkan tabel INNODB_SYS_INSTANT_COLUMNS ke database INFORMATION_SCHEMA. Jalankan SQL berikut untuk melihat kolom yang ditambahkan oleh 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:

    Jalankan SQL berikut untuk melihat detail kolom suatu tabel. Jika kolom HAS_DEFAULT bernilai 1, kolom tersebut ditambahkan menggunakan 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 Instant ADD COLUMN, tetapi saya mendapatkan error berikut saat menambahkan kolom: Feature not supported: 1845 ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=COPY/INPLACE.

A:

Penyebab: Jika sebuah tabel tidak memiliki kunci primer atau kunci unik, RDS for MySQL akan menambahkan kunci primer implisit untuk meningkatkan efisiensi replikasi. Secara default, kunci primer implisit ini adalah kolom terakhir. Hal ini memaksa Instant ADD COLUMN menempatkan kolom baru pada posisi tertentu. Namun, MySQL 5.7 dan MySQL 8.0 (versi lebih awal dari 20230630) tidak mendukung penempatan kolom pada posisi tertentu.

Solusi: Untuk MySQL 5.7 atau MySQL 8.0 (versi lebih awal dari 20230630), pastikan tidak ada kunci primer implisit di dalam tabel.