All Products
Search
Document Center

Data Management:Ikhtisar Perubahan Skema Tanpa Lock

Last Updated:Aug 06, 2026

Perubahan DDL tanpa lock mencegah penguncian tabel selama perubahan skema, sehingga menghindari gangguan bisnis dan keterlambatan replikasi yang disebabkan oleh operasi DDL Online native.

Latar Belakang

Saat melakukan perubahan skema pada tabel besar, Anda harus mempertimbangkan risiko penguncian tabel yang memblokir operasi tulis.

  • Pada MySQL 5.5 dan versi sebelumnya, DDL mendukung dua algoritma eksekusi: Table-Copy dan In-Place.

    • Table-Copy: Menyalin data ke tabel temporary, mengunci tabel sumber, dan memblokir operasi tulis hingga perubahan selesai.

    • In-Place (tersedia sejak MySQL 5.5): Mengizinkan operasi baca dan tulis selama eksekusi, tetapi hanya mendukung operasi terkait indeks.

  • Versi MySQL 5.6 dan yang lebih baru juga memperkenalkan Innodb-OnlineDDL. Untuk informasi selengkapnya tentang Innodb-OnlineDDL, lihat Innodb-OnlineDDL.

    Innodb-OnlineDDL mencakup berbagai jenis DDL, seperti menambah atau menghapus kolom, mengganti nama kolom, serta menambah atau memodifikasi indeks. Namun, fitur ini tidak mendukung beberapa jenis umum, seperti memodifikasi tipe kolom, mengubah panjang kolom, atau mengubah set karakter.

Kasus Penggunaan

  • Mengubah skema tabel database.

  • Mengubah set karakter dan aturan pengurutan tabel, atau menyesuaikan zona waktunya.

  • Menghindari penguncian tabel akibat operasi OPTIMIZE TABLE yang membebaskan ruang dan mengurangi tingkat fragmentasi. Untuk informasi selengkapnya, lihat Defragmentasi ruang menggunakan perubahan skema tanpa lock.

Jenis Database yang Didukung

RDS MySQL, PolarDB for MySQL, MyBase for MySQL, dan database lain yang kompatibel dengan MySQL.

Fitur

  • Fitur perubahan skema tanpa lock dari DMS memungkinkan Anda mengontrol kecepatan eksekusi, membantu mencegah keterlambatan replikasi dan meminimalkan dampak terhadap performa database. Fitur ini juga mendukung perubahan yang biasanya akan mengunci tabel jika menggunakan DDL Online native.

  • Berbeda dengan pt-online-schema-change dan OSC, fitur perubahan skema tanpa lock dari DMS tidak bergantung pada trigger. Fitur ini berjalan secara asinkron dengan dampak minimal terhadap database dan dapat dihentikan kapan saja secara aman.

  • Fitur perubahan skema tanpa lock dari DMS sangat kompatibel dengan DTS dan tidak mengganggu tautan replikasi DTS tingkat tabel.

    Catatan

    Tautan replikasi DTS harus telah dijalankan ulang setelah 14 Februari 2020.

  • Tabel berikut membandingkan kemampuan DDL Online native MySQL dengan fitur perubahan skema tanpa lock dari DMS:

    Operasi

    MySQL 5.5 dan sebelumnya

    MySQL 5.6 dan seterusnya

    Perubahan skema tanpa lock DMS

    Menambah kolom

    Menghapus kolom

    Mengganti nama kolom

    Menambah indeks

    Memodifikasi indeks

    Defragmentasi tabel

    Memodifikasi tipe kolom

    Memodifikasi panjang kolom

    Memodifikasi set karakter

    Mengonversi set karakter

    Menyesuaikan zona waktu

    Meredam atau menghilangkan keterlambatan replika baca

    Menambah kunci unik

    Menambah constraint

    Penting

    Saat Anda menambahkan kunci unik atau constraint menggunakan fitur perubahan skema tanpa lock dari DMS, perlu diperhatikan bahwa data apa pun di tabel sumber yang melanggar kunci unik atau constraint baru tersebut akan secara otomatis dibuang oleh MySQL selama proses penyalinan ke tabel temporary.

Untuk perbandingan fitur perubahan skema tanpa lock dari DMS dengan solusi lain, lihat Perbandingan solusi perubahan skema tanpa lock.

Catatan Penggunaan

  • DMS mendukung perubahan skema untuk tabel partisi yang sudah ada.

  • Anda dapat menggunakan satu tiket perubahan skema tanpa lock untuk memodifikasi beberapa tabel dalam database yang sama.

    Saat mengonfigurasi pernyataan SQL untuk tiket tersebut, Anda dapat memisahkan pernyataan untuk tabel berbeda dengan titik koma (;).

  • Anda tidak dapat memperbarui primary key atau unique key tabel selama perubahan skema tanpa lock jika kunci tersebut merupakan satu-satunya kunci pada tabel. Upaya melakukan hal ini akan menyebabkan tugas gagal.

Cara Kerja

Saat Anda mengirimkan tiket perubahan skema tanpa lock, DMS secara otomatis menjalankan langkah-langkah berikut untuk menyelesaikan perubahan tanpa mengunci tabel:

  1. Membuat tabel temporary. DMS membuat tabel baru yang meniru skema tabel sumber.

    Sintaks SQL-nya adalah CREATE TABLE tmp_table_name LIKE table_name.

  2. Mengubah skema tabel temporary. DMS menerapkan perubahan DDL yang diminta ke tabel temporary.

    Sintaks SQL-nya adalah ALTER TABLE tmp_table_name XXXX.

  3. Menyalin seluruh data. DMS menyalin semua data dari tabel sumber ke tabel temporary.

    Sintaks SQL-nya adalah INSERT IGNORE INTO tmp_table_name (SELECT %s FROM table_name FORCE INDEX (%s) WHERE XXX LOCK IN SHARE MODE).

  4. Mengurai binlog untuk menyinkronkan data inkremental. DMS menerapkan perubahan yang sedang berlangsung dari binlog tabel sumber ke tabel temporary.

    Sintaks SQL-nya adalah UPDATE/INSERT/DELETE tmp_table_name.

  5. Menukar tabel. DMS mengganti nama tabel sumber menjadi nama cadangan dan tabel temporary menjadi nama tabel asli secara atomik.

    Sintaks SQL-nya adalah RENAME TABLE table_name to old_tmp_table_name, tmp_table_name to table_name.

Catatan

tmp_table_name adalah contoh nama tabel temporary. Anda dapat menemukan nama tabel temporary spesifik di area progres tugas perubahan skema tanpa lock. Untuk informasi selengkapnya, lihat Melihat progres perubahan skema tanpa lock.

Format nama tabel temporary adalah sebagai berikut:

  • Tabel data: tp_{change_ID}_ogt_{original_table_name}, tp_{change_ID}_g_{original_table_name}

  • Tabel heartbeat: tp_{change_ID}_ogl_{original_table_name}, tp_{change_ID}_l_{original_table_name}

  • Tabel bantu sebelum alih bencana dan tabel asli setelah alih bencana: tp_{change_ID}_del_{original_table_name}, tp_{change_ID}_d_{original_table_name}

  • Deteksi penguncian tabel: tpa_xxx_xxx

Catatan

ID perubahan adalah ID eksekusi untuk mesin internal DMS. Ini bukan ID tiket atau ID tugas.

Dokumen Terkait

Pertanyaan Umum

  • T: Apakah perubahan skema tanpa lock memengaruhi layanan saya?

    J: Secara normal, perubahan skema tanpa lock tidak memengaruhi layanan Anda. Namun, proses penyalinan data dapat berdampak pada performa instans.

  • T: Saya menerima error saat mencoba menambahkan indeks dengan CREATE_INDEX dalam tiket perubahan skema tanpa lock. Apakah DMS tidak mendukung penambahan indeks?

    J: Ya, DMS mendukung penambahan indeks. Jalankan pernyataan ALTER TABLE berikut untuk menambahkan indeks:

    ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) ;
  • T: Saya menerima error saat mencoba mengganti nama kolom dengan rename column dalam tiket perubahan skema tanpa lock. Apakah DMS tidak mendukung penggantian nama kolom?

    J: Ya, DMS mendukung penggantian nama kolom. Jalankan pernyataan ALTER TABLE berikut untuk mengganti nama kolom:

    ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name datatype;