PolarDB for MySQL memperkenalkan fitur Online Copy DDL yang mengurangi gangguan bisnis akibat operasi Copy DDL tradisional—seperti MODIFY COLUMN atau konversi antara tabel standar dan tabel partisi—yang memegang kunci metadata (MDL) sepanjang eksekusi.
Informasi Latar Belakang
Selama eksekusi Copy DDL standar, MySQL memegang kunci MDL-SNW (Shared No Write), yang secara terus-menerus memblokir semua operasi tulis (INSERT/UPDATE/DELETE) pada tabel. Hal ini dapat menyebabkan penumpukan koneksi dan, dalam kasus parah, kegagalan sistem. Online Copy DDL mengoptimalkan mekanisme penguncian selama fase penyalinan data. Dengan tetap menjamin konsistensi data, fitur ini memungkinkan operasi baca dan tulis berjalan secara konkuren, sehingga secara signifikan meningkatkan ketersediaan bisnis selama eksekusi DDL.
Lingkup
PolarDB for MySQL versi 8.0.2 dan revisi 8.0.2.2.33.1 atau lebih baru. Untuk mengonfirmasi versi kluster, tanyakan nomor versi.
Fitur Online Copy DDL saat ini sedang dalam rilis bertahap. Untuk menggunakannya, buka Quota Center. Temukan kuota dengan ID polarm_82_online_copy_ddl, lalu klik **Request** pada kolom **Operation** yang sesuai untuk mengaktifkan fitur tersebut. Saat mengajukan permintaan, sertakan ID kluster yang akan diaktifkan (misalnya, pc-xxx).
Batasan
Operasi yang didukung:
Konversi antara tabel standar dan tabel partisi.
Pernyataan
MODIFY COLUMN. Modifikasi posisi kolom secara bersamaan tidak didukung.
Operasi atau objek yang tidak didukung:
Tabel yang berisi kolom tipe JSON.
Tabel yang berisi indeks spasial (SPATIAL INDEX).
Tabel yang berisi global secondary indexes (GSI).
Tabel partisi hibrid.
Sesi yang telah mengeksekusi
LOCK TABLESpada tabel tersebut.Pernyataan DDL yang secara eksplisit menentukan
ALGORITHM=COPYdanLOCK=SHAREDatauLOCK=EXCLUSIVE.
Sebelum mengeksekusi operasi DDL, gunakan fitur EXPLAIN DDL untuk memastikan apakah operasi tersebut mendukung Online Copy DDL.
Penggunaan
Aktifkan fitur Online Copy DDL dengan mengatur parameter loose_polar_support_online_copy_ddl_algorithm. Untuk pernyataan MODIFY COLUMN, aktifkan juga parameter loose_polar_support_online_copy_ddl_algorithm_for_modify. Untuk instruksi detail, lihat Setel parameter kluster dan parameter node. Deskripsi parameter sebagai berikut:
Parameter | Level | Deskripsi |
| Global | Sakelar utama untuk Online Copy DDL. Rentang nilai:
|
| Global | Sakelar Online Copy DDL khusus untuk
|
Metode 1: Menentukan Algoritma Secara Eksplisit (Direkomendasikan)
Paksa penggunaan Online Copy DDL dengan menentukan ALGORITHM=COPY, LOCK=NONE:
CREATE TABLE t(a int);
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL, ALGORITHM=COPY, LOCK=NONE;Jika Anda menggunakan pernyataan di atas dan menerima error ERROR 1846 (0A000): LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED., operasi modifikasi tipe kolom tersebut saat ini tidak mendukung algoritma Online Copy DDL. Pastikan parameter loose_polar_support_online_copy_ddl_algorithm telah diaktifkan dan tinjau kembali batasan dengan cermat.
Metode 2: Memilih Algoritma Optimal Secara Otomatis (Perilaku Default)
Jika Anda tidak menentukan algoritma atau menggunakan DEFAULT, sistem akan secara otomatis memilih metode eksekusi yang paling sesuai:
-- Metode 1: DEFAULT eksplisit
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL, ALGORITHM=DEFAULT, LOCK=DEFAULT;
-- Metode 2: Tidak mencantumkan sama sekali (setara)
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL;Sistem pertama-tama akan mencoba Online Copy DDL. Jika kondisi tidak terpenuhi, sistem secara otomatis kembali ke Copy DDL tradisional yang mengunci tabel, sehingga memastikan DDL berhasil diselesaikan.