Secara tradisional, penambahan kolom memerlukan pembangunan ulang seluruh tabel, yang mengonsumsi sumber daya sistem secara signifikan. Kluster PolarDB for MySQL mendukung penambahan kolom instan, sehingga Anda dapat menambahkan kolom ke tabel berukuran apa pun dalam hitungan detik.
Fitur penambahan kolom instan menggunakan algoritma INSTANT untuk menjalankan operasi DDL. Fitur ini hanya memodifikasi metadata di kamus data tanpa memodifikasi atau menyalin data historis serta tidak membangun ulang tabel. Oleh karena itu, proses ini tidak bergantung pada ukuran tabel dan seluruh operasi DDL selesai dalam hitungan detik.
Versi yang didukung
Kluster Anda harus menjalankan salah satu versi berikut:
PolarDB for MySQL 5.6 dengan revisi 5.6.1.0.43 atau lebih baru.
CatatanFitur penambahan kolom instan untuk PolarDB for MySQL 5.6 sedang dalam rilis canary. Untuk menggunakannya, buka Quota Center. Temukan kuota bernama
polardb_mysql_iac_56, lalu klik Request pada kolom Actions.PolarDB for MySQL 5.7 dengan revisi 5.7.1.0.6 atau lebih baru.
CatatanAnda harus mengaktifkan parameter loose_innodb_support_instant_add_column sebelum dapat menggunakan fitur ini pada kluster PolarDB for MySQL 5.7.
PolarDB for MySQL 8.0.
CatatanKluster PolarDB for MySQL 8.0 mendukung penambahan kolom instan secara default. Tidak diperlukan konfigurasi parameter.
Anda dapat memeriksa nomor revisi kluster Anda. Untuk informasi selengkapnya, lihat memeriksa nomor versi.
Batasan
Anda hanya dapat menambahkan kolom sebagai kolom terakhir dalam tabel.
Menambahkan kolom virtual:
PolarDB for MySQL 5.6 dan 5.7: Tidak didukung.
PolarDB for MySQL 8.0: Didukung.
Menambahkan bidang ke tabel partisi dalam hitungan detik.
PolarDB for MySQL 5.6: Tidak didukung.
PolarDB for MySQL 5.7 dan 8.0: Didukung.
CatatanFitur penambahan kolom instan untuk tabel partisi di PolarDB for MySQL 5.7 sedang dalam rilis canary. Untuk menggunakannya, buka Quota Center. Temukan kuota bernama
polarM_57_iac_on_partition_table, lalu klik Request pada kolom Actions.
Indeks teks lengkap tidak didukung untuk tabel.
Tabel dengan ROW_FORMAT yang diatur ke COMPRESSED tidak didukung.
Anda dapat menambahkan kolom secara instan ke tabel yang memiliki Indeks Kolom dalam Memori (IMCI), tetapi hanya jika kondisi berikut terpenuhi:
Untuk PolarDB for MySQL 8.0.1.1.42 dan versi sebelumnya, atau 8.0.2.2.23 dan versi sebelumnya: Atur parameter
imci_enable_add_column_instant_ddlkeON. Saat diaktifkan, penambahan kolom instan akan memicu pembangunan ulang IMCI diam-diam di latar belakang. Selama proses pembangunan ulang, IMCI tidak tersedia.Untuk PolarDB for MySQL 8.0.1.1.42 dan versi setelahnya, atau 8.0.2.2.23 dan versi setelahnya: Atur parameter
imci_enable_add_column_instant_ddlkeOFF.
Tabel yang memiliki opsi
implicit_primary_keyyang diaktifkan memerlukan kunci primary kustom.Anda tidak dapat menggabungkan penambahan kolom instan dengan operasi DDL lain—seperti menambahkan indeks—dalam satu pernyataan SQL yang sama.
Cara menggunakan
Pengaturan parameter
PolarDB for MySQL kluster 5.6 dan 5.7: Aktifkan parameter loose_innodb_support_instant_add_column untuk menggunakan penambahan kolom instan. Untuk petunjuknya, lihat Aktifkan parameter.
Parameter
Level
Deskripsi
loose_innodb_support_instant_add_column
Global
Mengaktifkan atau menonaktifkan penambahan kolom instan. Nilai yang valid:
ON: Mengaktifkan penambahan kolom instan.
OFF (default): Menonaktifkan penambahan kolom instan.
PolarDB for MySQL kluster 8.0: Anda dapat menggunakan penambahan kolom instan tanpa mengonfigurasi parameter apa pun.
Sintaksis
Paksa penambahan kolom instan dengan menentukan
ALGORITHM=INSTANT. Contoh:ALTER TABLE <table_name> ADD COLUMN <column_name> int, ALGORITHM=INSTANT;CatatanJika pernyataan ini mengembalikan
ERROR 0A000: ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=COPY/INPLACE., artinya penambahan kolom instan tidak didukung untuk operasi ini. Periksa apakah parameter loose_innodb_support_instant_add_column telah diaktifkan, lalu tinjau bagian Batasan.Abaikan klausa
ALGORITHMatau tentukanALGORITHM=DEFAULT. PolarDB secara otomatis memilih algoritma tercepat. Contoh:ALTER TABLE <table_name> ADD COLUMN <column_name> int, ALGORITHM=DEFAULT; ALTER TABLE <table_name> ADD COLUMN <column_name> int;CatatanPolarDB memilih algoritma dalam urutan berikut: INSTANT > INPLACE > COPY.
Lihat informasi kolom yang ditambahkan menggunakan algoritma INSTANT
PolarDB for MySQL kluster 5.6 dan 5.7: Tabel baru bernama
INNODB_SYS_INSTANT_COLUMNSmuncul di databaseINFORMATION_SCHEMA. Tabel ini menyimpan detail tentang kolom yang ditambahkan menggunakan algoritma INSTANT, seperti nama kolom, nomor ordinal, dan nilai default (disimpan dalam format biner). Anda dapat menjalankan pernyataan berikut untuk melihat detailnya:SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INSTANT_COLUMNS;CatatanSetelah Anda menggunakan algoritma
INSTANTuntuk menambahkan kolom ke tabel target, jika Anda menjalankan operasi DDL yang memicu pembangunan ulang tabel (sepertiOPTIMIZE TABLE), tabel tersebut akan dibangun ulang secara fisik. Selama proses ini, kolomINSTANTasli secara otomatis dikonversi menjadi kolom biasa, dan datanya sepenuhnya dipertahankan di tabel baru. Karena kolom-kolom tersebut tidak lagi mendukung algoritmaINSTANT, catatan yang sesuai di tabel sistemINNODB_SYS_INSTANT_COLUMNSakan dihapus.PolarDB for MySQL kluster 8.0: Anda dapat menjalankan pernyataan berikut untuk melihat detail kolom. Jika kolom
has_defaultmenampilkan nilai 1, berarti kolom tersebut ditambahkan menggunakan algoritma INSTANT.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, silakan hubungi dukungan teknis.