All Products
Search
Document Center

Data Management:Perubahan\ data\ tanpa\ kunci

Last Updated:Mar 29, 2026

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:

  1. Regular user mengirim tiket perubahan

  2. DMS administrator menyetujui dan mengeksekusinya

Kirim tiket (regular user)

  1. Login ke DMS console V5.0 sebagai regular user.

  2. Pada bilah navigasi atas, pilih Database Development > Data Change > Lockless Change.

    Dalam mode simple, arahkan kursor ke ikon 2023-01-28_15-57-17.png di pojok kiri atas dan pilih All Features > Database Development > Data Change > Lockless Change.
  3. Konfigurasikan parameter berikut dan klik Submit. Untuk contoh ini, masukkan pernyataan berikut di SQL Statements for Change:

    ParameterWajibDeskripsi
    DatabaseYaPilih poc_dev
    Business BackgroundTidakJelaskan kebutuhan bisnis Anda untuk mengurangi komunikasi bolak-balik dengan pihak yang menyetujui.
    Affected RowsYaPerkirakan jumlah baris yang akan terpengaruh oleh perubahan ini. Jalankan kueri COUNT
    SQL Statements for ChangeYaMasukkan pernyataan UPDATE atau DELETE yang akan dieksekusi.
    UPDATE `big_table` SET `long_text_b` = 'random long text' WHERE id < 1000000;
  4. Pada halaman detail tiket, klik chunk option. Pada dialog yang muncul, konfigurasikan pengaturan eksekusi Batch dan klik Submit Change.

    分批执行配置

  5. Tinjau detail tiket. Sebelum dieksekusi, DMS menjalankan pemeriksaan awal pada pernyataan SQL Anda yang mencakup:

    Item pemeriksaanApa yang divalidasi
    Syntax validationMenangkap error SQL sebelum perubahan dijalankan
    Statement typeMemastikan tipe pernyataan sesuai dengan konfigurasi aturan keamanan Anda
    PermissionsMemverifikasi bahwa pengguna yang mengajukan memiliki izin yang diperlukan
    Row scan estimateMemperkirakan jumlah baris yang akan dipindai
  6. Setelah pemeriksaan awal berhasil, klik Submit for Approval, lalu klik OK pada dialog konfirmasi.

    Penting

    Anda hanya dapat mengedit tiket sebelum menyerahkannya untuk persetujuan.

Menyetujui dan mengeksekusi tiket (administrator DMS)

  1. Masuk ke Konsol DMS V5.0 sebagai administrator DMS.

  2. Pada halaman utama Konsol DMS, klik Pending Tickets di bagian My Tickets.

  3. Pada halaman My Tickets, klik nomor tiket pada kolom Ticket Number untuk membuka tiket tersebut.

  4. Pada panel Ticket Details, tinjau detail perubahan, lalu klik Approve.

  5. Pada dialog persetujuan, masukkan komentar Anda, lalu klik Submit.

  6. 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.
  7. 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.

  1. Masuk ke DMS console V5.0 sebagai administrator DMS.

  2. Pada daftar instans, bentangkan instans POC_dev dan klik ganda database poc_dev untuk membuka SQL Console.

  3. Jalankan kueri berikut dan pastikan bidang long_text_b menampilkan nilai yang telah diperbarui:

    SELECT * FROM `big_table`;