全部产品
Search
文档中心

PolarDB:Instant ADD COLUMN

更新时间:Jul 06, 2025

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.

    Catatan

    Fitur 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.

    Catatan

    Untuk 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.

    Catatan

    Secara 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.

    Catatan

    Fitur 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_ddl ke ON. 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_ddl ke OFF.

  • Fitur instant ADD COLUMN tidak dapat digunakan untuk menambahkan kolom ke tabel yang memiliki opsi implicit_primary_key diaktifkan 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=INSTANT untuk secara paksa mengaktifkan fitur instant ADD COLUMN. Contoh:

    ALTER TABLE <table_name> ADD COLUMN <column_name> int, ALGORITHM=INSTANT;
    Catatan

    Jika 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;
    Catatan

    PolarDB 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_COLUMNS ditambahkan ke database INFORMATION_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;
    Catatan

    Setelah 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_default adalah 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.