全部产品
Search
文档中心

ApsaraDB RDS:Penambahan kolom instan

更新时间:Dec 30, 2025

Fitur Penambahan Kolom Instan dari ApsaraDB RDS for MySQL memungkinkan Anda menambahkan kolom dengan cepat hanya melalui perubahan metadata tabel, sehingga menghindari pembangunan ulang seluruh tabel. Operasi ini selesai dalam hitungan detik, terlepas dari volume data pada tabel tersebut. Fitur ini menggunakan sumber daya sistem yang minimal, tidak mengunci tabel, dan tidak mengganggu operasi bisnis. Fitur ini ideal untuk skenario yang memerlukan perluasan skema tabel secara berkala serta kelangsungan bisnis yang tinggi.

Deskripsi fitur

Penambahan kolom instan untuk ApsaraDB RDS for MySQL mengoptimalkan operasi ADD COLUMN dengan memodifikasi metadata di kamus data. Fitur ini menghindari modifikasi atau pembangunan ulang seluruh tabel, yang biasanya diperlukan dalam operasi Data Definition Language (DDL) tradisional. Akibatnya, penambahan kolom selesai dalam hitungan detik, terlepas dari volume data pada tabel tersebut.

Tabel berikut membandingkan penambahan kolom instan dengan penambahan kolom tradisional:

Item Perbandingan

Penambahan kolom tradisional (mode Copy atau Inplace)

Penambahan kolom instan RDS (mode Instant)

Waktu penambahan kolom

Memerlukan pembangunan ulang seluruh tabel. Waktu yang dibutuhkan sebanding dengan ukuran tabel.

Operasi hanya memodifikasi metadata dan selesai dalam hitungan detik.

Konsumsi Sumber Daya

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

Hampir tidak menggunakan sumber daya tambahan.

Dampak Bisnis

Berpotensi menghambat operasi bisnis online pada skenario dengan transaksi jangka panjang atau konkurensi tinggi.

Tidak mengunci tabel atau menghambat operasi.

Batas Ukuran Tabel

Tidak mendukung penambahan kolom cepat untuk tabel besar.

Mendukung penambahan kolom cepat untuk tabel dengan ukuran apa pun.

Penerapan

Instans Anda harus memenuhi persyaratan versi berikut agar dapat menggunakan fitur penambahan kolom instan. Jika instans Anda tidak memenuhi persyaratan tersebut, lakukan peningkatan versi mesin minor.

  • MySQL 8.0: Semua versi mesin minor didukung.

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

Fitur penambahan kolom instan memiliki batasan berikut:

  • Batasan engine: Hanya engine InnoDB yang didukung.

  • Batasan tipe tabel: Fitur ini tidak didukung untuk tabel terkompresi, tabel dengan indeks teks penuh, atau tabel temporary.

  • Batasan operasi: Penggabungan beberapa operasi tidak didukung. Misalnya, Anda tidak dapat menambahkan kolom dan indeks secara bersamaan.

  • Batasan instans hanya baca: Jika Anda menggunakan penambahan kolom instan pada instans utama high-availability yang memiliki instans hanya baca yang tersambung, Anda harus mengatur parameter loose_innodb_instant_ddl_enabled ke ON baik pada instans utama maupun instans hanya baca. Jika tidak, replikasi ke instans hanya baca akan terputus.

  • Posisi kolom default:

    Versi MySQL

    Versi mesin minor

    Posisi kolom

    5.7

    20250331 atau lebih baru

    Kolom terakhir dipilih secara default.

    8.0

    Lebih awal dari 20230630

    Default-nya adalah kolom terakhir.

    20230630 atau lebih baru

    Anda dapat menentukan posisi kolom baru.

Aktifkan penambahan kolom instan

Penambahan kolom instan diaktifkan secara default di MySQL 8.0, sehingga Anda dapat menggunakan fitur ini tanpa mengubah parameter apa pun. Untuk MySQL 5.7, Anda harus mengikuti langkah-langkah berikut untuk mengaktifkan penambahan kolom instan:

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

  2. Pada panel navigasi kiri, klik Parameters.

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

    Catatan

    Perubahan pada parameter loose_innodb_instant_ddl_enabled berlaku langsung tanpa perlu me-restart instans.

  4. Klik Submit Parameters. Pada kotak dialog, pilih rentang waktu agar perubahan diterapkan, lalu klik OK.

Operasi terkait

Gunakan penambahan kolom instan

  • Untuk memaksa penambahan kolom instan, tentukan ALGORITHM=INSTANT:

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

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

Lihat tabel tempat penambahan kolom instan telah dilakukan

  • MySQL 5.7:

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

    -- Untuk versi mesin minor sebelum 20230630
    SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE INSTANT_COLS > 0;
    
    -- Untuk versi mesin minor 20230630 atau lebih baru
    SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE TOTAL_ROW_VERSIONS > 0;

Lihat kolom yang ditambahkan menggunakan penambahan kolom instan

  • 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 informasi tentang kolom yang ditambahkan menggunakan fitur penambahan kolom instan.

    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:

    Anda dapat menjalankan pernyataan SQL berikut untuk melihat informasi kolom pada tabel tersebut. Jika nilai kolom HAS_DEFAULT pada hasil kueri adalah 1, maka kolom tersebut ditambahkan menggunakan fitur penambahan kolom instan.

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