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.
Untuk informasi tentang aturan versi instance, lihat Catatan Rilis.
Untuk informasi tentang cara melihat versi instance, lihat Lihat dan Perbarui Versi Sebuah Instance.
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
UNIQUEatauKEYke 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, danADD COLUMNyang didukung. Operasi lainnya, sepertiADD INDEX,DROP INDEX, atauSET 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:
Buat tabel
t1.CREATE TABLE t1(a INT PRIMARY KEY, b TINYINT, c VARCHAR(10)) PARTITION BY KEY(a);Ubah tipe kolom
bdancdalam tabelt1.ALTER TABLE t1 MODIFY COLUMN b INT, MODIFY COLUMN c VARCHAR(30), ALGORITHM=OMC;Ubah nama dan tipe kolom
bdalam tabelt1, serta tambahkan kolom baruedengan tipeBIGINT.ALTER TABLE t1 CHANGE COLUMN b d INT, ADD COLUMN e BIGINT AFTER d, ALGORITHM=OMC;