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:
Buka halaman RDS Instances, pilih Wilayah, lalu klik ID instans target.
Pada panel navigasi kiri, klik Parameters.
Pada tab Editable Parameters, temukan parameter
loose_innodb_instant_ddl_enableddan atur Running Parameter Value menjadi ON.CatatanPerubahan pada parameter
loose_innodb_instant_ddl_enabledberlaku langsung tanpa perlu me-restart instans.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_COLUMNSditambahkan ke databaseINFORMATION_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_DEFAULTpada 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>");