Saat menjalankan pernyataan UPDATE atau DELETE pada tabel besar, transaksi standar akan mengunci tabel hingga operasi selesai—memblokir pembacaan dan penulisan serta berisiko menyebabkan timeout yang mengganggu lalu lintas produksi. Fitur perubahan data tanpa kunci (lock-free) menghindari hal ini dengan membagi baris yang terpengaruh menjadi batch kecil dan memproses setiap batch sebagai transaksi terpisah berdurasi singkat. Setiap batch langsung dikomit dan melepaskan kuncinya, sehingga tabel tetap responsif selama proses berlangsung.
Cara kerja
DMS membagi baris yang terpengaruh menjadi chunk berdasarkan primary key atau unique key tabel tersebut. Untuk setiap chunk, DMS menerapkan perubahan, melakukan commit, lalu beralih ke chunk berikutnya. Tidak ada satu transaksi pun yang menahan kunci cukup lama untuk memblokir pembacaan atau penulisan konkuren.
Persyaratan
Tabel harus memiliki:
Primary key, atau
Unique key yang tidak menerima nilai null
Batasan
Hanya beroperasi pada single table
Mendukung pernyataan SQL sederhana: SELECT, UPDATE, dan DELETE
Tidak mendukung pernyataan multi-tabel, seperti DELETE dengan JOIN
Kirim permintaan perubahan tanpa kunci
Contoh ini memperbarui semua baris di big_table di mana id < 1,000,000, mengatur nilai long_text_b menjadi 'random long text'.
Proses ini melibatkan dua peran:
Regular user mengirim tiket perubahan
DMS administrator menyetujui dan mengeksekusinya
Kirim tiket (regular user)
Login ke DMS console V5.0 sebagai regular user.
Pada bilah navigasi atas, pilih Database Development > Data Change > Lockless Change.
Dalam mode simple, arahkan kursor ke ikon
di pojok kiri atas dan pilih All Features > Database Development > Data Change > Lockless Change.Konfigurasikan parameter berikut dan klik Submit. Untuk contoh ini, masukkan pernyataan berikut di SQL Statements for Change:
Parameter Wajib Deskripsi Database Ya Pilih poc_devBusiness Background Tidak Jelaskan kebutuhan bisnis Anda untuk mengurangi komunikasi bolak-balik dengan pihak yang menyetujui. Affected Rows Ya Perkirakan jumlah baris yang akan terpengaruh oleh perubahan ini. Jalankan kueri COUNTSQL Statements for Change Ya Masukkan pernyataan UPDATE atau DELETE yang akan dieksekusi. UPDATE `big_table` SET `long_text_b` = 'random long text' WHERE id < 1000000;Pada halaman detail tiket, klik chunk option. Pada dialog yang muncul, konfigurasikan pengaturan eksekusi Batch dan klik Submit Change.

Tinjau detail tiket. Sebelum dieksekusi, DMS menjalankan pemeriksaan awal pada pernyataan SQL Anda yang mencakup:
Item pemeriksaan Apa yang divalidasi Syntax validation Menangkap error SQL sebelum perubahan dijalankan Statement type Memastikan tipe pernyataan sesuai dengan konfigurasi aturan keamanan Anda Permissions Memverifikasi bahwa pengguna yang mengajukan memiliki izin yang diperlukan Row scan estimate Memperkirakan jumlah baris yang akan dipindai Setelah pemeriksaan awal berhasil, klik Submit for Approval, lalu klik OK pada dialog konfirmasi.
PentingAnda hanya dapat mengedit tiket sebelum menyerahkannya untuk persetujuan.
Menyetujui dan mengeksekusi tiket (administrator DMS)
Masuk ke Konsol DMS V5.0 sebagai administrator DMS.
Pada halaman utama Konsol DMS, klik Pending Tickets di bagian My Tickets.
Pada halaman My Tickets, klik nomor tiket pada kolom Ticket Number untuk membuka tiket tersebut.
Pada panel Ticket Details, tinjau detail perubahan, lalu klik Approve.
Pada dialog persetujuan, masukkan komentar Anda, lalu klik Submit.
Pada langkah Execute, klik Execute Change. Atur Execution Strategy menjadi Running immediately, lalu klik Confirm Execution.
- Execution Strategy secara default diatur ke Running immediately. Pilih Schedule untuk menetapkan waktu eksekusi tertentu. - Aktifkan Specify End Time agar eksekusi berhenti secara otomatis pada waktu yang ditentukan, sehingga mencegah perubahan berjalan selama jam sibuk.
Untuk memantau progres, klik Details pada langkah Execute, lalu pilih Execution Progress.
Verifikasi perubahan
Setelah perubahan selesai, jalankan kueri SELECT untuk memastikan data telah diperbarui dengan benar.
Masuk ke DMS console V5.0 sebagai administrator DMS.
Pada daftar instans, bentangkan instans
POC_devdan klik ganda databasepoc_devuntuk membuka SQL Console.Jalankan kueri berikut dan pastikan bidang
long_text_bmenampilkan nilai yang telah diperbarui:SELECT * FROM `big_table`;