全部产品
Search
文档中心

PolarDB:Ubah tipe data kolom tanpa mengunci tabel

更新时间:Jul 02, 2025

Operasi yang memodifikasi tipe kolom dapat memblokir operasi DML. PolarDB-X menyediakan fitur Online Modify Column (OMC) yang memungkinkan Anda mengubah tipe kolom tanpa mengunci tabel secara online.

Versi yang didukung

  • Untuk mengubah tipe kolom tanpa mengunci tabel, instance Anda harus menggunakan versi V5.4.18-17108394 atau lebih baru.

  • Untuk operasi yang hanya menambah atau menghapus kolom tanpa mengunci tabel, instance Anda harus menggunakan versi V5.4.20-20241224 atau lebih baru.

  • Untuk melakukan operasi tanpa mengunci tabel menggunakan Data Management (DMS), instance Anda harus menggunakan versi V5.4.20-20241224 atau lebih baru.

Catatan

Peringatan

  • Anda tidak dapat memodifikasi nama kolom yang digunakan sebagai shard keys, partition keys, atau primary keys. Namun, Anda dapat memodifikasi tipe kolom tersebut.

  • Anda tidak dapat menghapus kolom yang termasuk dalam shard keys, partition keys, atau primary keys.

  • Anda tidak dapat menambahkan kata kunci seperti UNIQUE atau KEY ke definisi kolom yang baru dibuat.

  • Anda tidak dapat memodifikasi kolom yang dihasilkan atau kolom yang direferensikan dalam ekspresi kolom yang dihasilkan.

  • Hanya operasi MODIFY COLUMN, CHANGE COLUMN, DROP COLUMN, dan ADD COLUMN yang didukung. Operasi lainnya, seperti ADD INDEX, DROP INDEX, atau SET DEFAULT, tidak didukung.

Manfaat

  • Database dalam mode AUTO dan DRDS didukung.

  • Anda dapat mengubah tipe beberapa kolom secara bersamaan.

  • Anda dapat mengubah tipe kolom serta menambah atau menghapus kolom dalam satu pernyataan.

Sintaks

Pernyataan ALTER TABLE dieksekusi tanpa mengunci tabel hanya jika ALGORITHM=OMC ditentukan di PolarDB-X. Jika kata kunci tidak ditentukan, algoritma MySQL standar digunakan secara default (yang mungkin memicu kunci metadata yang memblokir operasi DML).

ALTER TABLE tbl_name
    alter_option [, alter_option] ...
    ALGORITHM = OMC

alter_option: {
    table_options
  | ADD [COLUMN] col_name column_definition
        [FIRST | AFTER col_name]
  | CHANGE [COLUMN] old_col_name new_col_name column_definition
        [FIRST | AFTER col_name]
  | DROP [COLUMN] col_name
  | MODIFY [COLUMN] col_name column_definition
        [FIRST | AFTER col_name]
}

Contoh

Contoh-contoh berikut menunjukkan cara mengubah tipe kolom tanpa mengunci tabel dalam database dalam mode AUTO:

  1. Buat tabel t1.

    CREATE TABLE t1(a INT PRIMARY KEY, b TINYINT, c VARCHAR(10)) PARTITION BY KEY(a);
  2. Ubah tipe kolom b dan c dalam tabel t1.

    ALTER TABLE t1 MODIFY COLUMN b INT, MODIFY COLUMN c VARCHAR(30), ALGORITHM=OMC;
  3. Ubah nama dan tipe kolom b dalam tabel t1, serta tambahkan kolom baru e dengan tipe BIGINT.

    ALTER TABLE t1 CHANGE COLUMN b d INT, ADD COLUMN e BIGINT AFTER d, ALGORITHM=OMC;