Saat menambahkan kolom ke tabel menggunakan metode tradisional, seluruh tabel dibangun ulang, yang memakan banyak sumber daya sistem. Untuk mengatasi masalah ini, PolarDB for MySQL menyediakan fitur instant ADD COLUMN yang memungkinkan penambahan kolom secara instan tanpa bergantung pada ukuran tabel.
Fitur instant ADD COLUMN memanfaatkan algoritma INSTANT untuk menjalankan operasi DDL. Fitur ini hanya memodifikasi metadata dalam kamus data, tanpa memengaruhi atau menyalin data yang ada atau membangun ulang tabel. Oleh karena itu, operasi DDL selesai dalam hitungan detik, terlepas dari ukuran tabel.
Prasyarat
Kluster Anda harus menjalankan salah satu versi mesin database berikut:
PolarDB for MySQL 5.6 dengan versi revisi 5.6.1.0.43 atau lebih baru.
CatatanFitur instant ADD COLUMN sedang dalam rilis canary untuk PolarDB for MySQL 5.6. Untuk menggunakannya, kunjungi Quota Center, temukan kuota dengan ID
polardb_mysql_iac_56, lalu klik Apply.PolarDB for MySQL 5.7 dengan versi revisi 5.7.1.0.6 atau lebih baru.
CatatanUntuk menggunakan fitur instant ADD COLUMN di kluster PolarDB for MySQL 5.7, atur parameter loose_innodb_support_instant_add_column ke ON.
PolarDB for MySQL 8.0.
CatatanSecara default, kluster PolarDB for MySQL 8.0 mendukung fitur instant ADD COLUMN tanpa perlu konfigurasi tambahan.
Untuk informasi tentang cara memeriksa versi mesin database kluster, lihat bagian "Query the engine version" dalam topik Versi Mesin.
Batasan
Fitur instant ADD COLUMN hanya dapat digunakan untuk menambahkan kolom di akhir tabel.
Fitur instant ADD COLUMN dapat digunakan untuk menambahkan kolom virtual ke tabel hanya di kluster PolarDB for MySQL 8.0, tetapi tidak di kluster PolarDB for MySQL 5.6 atau 5.7.
Fitur instant ADD COLUMN dapat digunakan untuk menambahkan kolom ke tabel terpartisi di kluster PolarDB for MySQL 5.7 dan 8.0, tetapi tidak di kluster PolarDB for MySQL 5.6.
CatatanFitur yang memungkinkan penambahan kolom secara instan ke tabel terpartisi sedang dalam rilis canary untuk PolarDB for MySQL 5.7. Untuk menggunakannya, kunjungi Quota Center, temukan kuota dengan ID
polarM_57_iac_on_partition_table, lalu klik Apply.Fitur instant ADD COLUMN tidak dapat digunakan untuk menambahkan kolom ke tabel tempat indeks teks penuh dibuat.
Fitur instant ADD COLUMN dapat digunakan untuk menambahkan kolom ke tabel tempat indeks kolom dalam memori (IMCI) dibuat. Kluster harus memenuhi persyaratan berikut:
Untuk kluster PolarDB for MySQL dengan versi lebih awal dari 8.0.1.1.42 atau 8.0.2.2.23, atur
imci_enable_add_column_instant_ddlkeON. Saat menggunakan fitur instant ADD COLUMN, IMCI tabel dibangun ulang di latar belakang, dan IMCI tidak tersedia selama proses pembangunan ulang.Untuk kluster PolarDB for MySQL dengan versi 8.0.1.1.42 atau lebih baru, atau 8.0.2.2.23 atau lebih baru, atur
imci_enable_add_column_instant_ddlkeOFF.
Fitur instant ADD COLUMN tidak dapat digunakan untuk menambahkan kolom ke tabel yang memiliki opsi
implicit_primary_keydiaktifkan tetapi tidak memiliki kolom kunci utama kustom.Operasi instant ADD COLUMN tidak dapat disertakan bersama operasi DDL lainnya (seperti membuat indeks) dalam Pernyataan SQL yang sama.
Penggunaan
Konfigurasikan parameter
Untuk kluster PolarDB for MySQL 5.6 dan 5.7, atur parameter loose_innodb_support_instant_add_column ke ON. Untuk informasi tentang cara mengonfigurasi parameter kluster, lihat Konfigurasi Parameter Kluster dan Node.
Parameter
Tingkat
Deskripsi
loose_innodb_support_instant_add_column
Global
Menentukan apakah akan mengaktifkan fitur instant ADD COLUMN. Nilai valid:
ON
OFF
Untuk kluster PolarDB for MySQL 8.0, tidak diperlukan konfigurasi parameter tambahan.
Jalankan pernyataan
Tentukan klausa
ALGORITHM=INSTANTuntuk secara paksa mengaktifkan fitur instant ADD COLUMN. Contoh:ALTER TABLE <table_name> ADD COLUMN <column_name> int, ALGORITHM=INSTANT;CatatanJika kolom tidak dapat ditambahkan menggunakan fitur instant ADD COLUMN dan pesan kesalahan
ERROR 0A000: ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=COPY/INPLACE.dikembalikan, algoritma INSTANT tidak didukung. Dalam hal ini, pastikan parameter loose_innodb_support_instant_add_column diatur ke ON dan bahwa operasi tersebut tidak dibatasi. Untuk informasi lebih lanjut, lihat Batasan.Jika Anda tidak menentukan algoritma atau menentukan algoritma default, PolarDB akan memilih algoritma tercepat untuk menambahkan kolom. Contoh:
ALTER TABLE <table_name> ADD COLUMN <column_name> int, ALGORITHM=DEFAULT; ALTER TABLE <table_name> ADD COLUMN <column_name> int;CatatanPolarDB memilih algoritma untuk menambahkan kolom berdasarkan urutan prioritas berikut: INSTANT > INPLACE > COPY.
Lihat kolom yang ditambahkan menggunakan algoritma INSTANT
Untuk kluster PolarDB for MySQL 5.6 dan 5.7, sebuah tabel bernama
INNODB_SYS_INSTANT_COLUMNSditambahkan ke databaseINFORMATION_SCHEMA. Tabel ini mencatat informasi tentang kolom yang ditambahkan secara instan, termasuk nama kolom, nomor urut kolom, dan nilai default (nilai biner). Anda dapat menjalankan pernyataan berikut untuk melihat informasi tentang kolom baru yang ditambahkan secara instan.SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INSTANT_COLUMNS;CatatanSetelah menambahkan kolom secara instan ke tabel dan melakukan operasi DDL yang memerlukan pembuatan ulang tabel, seperti DROP COLUMN, sistem akan menghapus informasi tentang kolom yang ditambahkan secara instan dari tabel
INNODB_SYS_INSTANT_COLUMNS.Untuk kluster PolarDB for MySQL 8.0, jalankan pernyataan berikut untuk melihat kolom tabel. Jika kolom ditambahkan menggunakan fitur instant ADD COLUMN, nilai parameter
has_defaultadalah 1.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, hubungi kami.