All Products
Search
Document Center

Data Management:Ikhtisar

Last Updated:Mar 29, 2026

DML (Data Manipulation Language) tanpa penguncian di Data Management (DMS) memungkinkan Anda menjalankan pernyataan UPDATE, DELETE, dan INSERT...SELECT pada set data besar tanpa mengunci tabel atau menurunkan kinerja database. Mesin DMS secara otomatis membagi data target menjadi batch-batch kecil dan mengeksekusi pernyataan tersebut satu per satu, dengan jeda singkat di antara setiap batch untuk melindungi replikasi primary-to-secondary serta mengurangi beban pada database.

Latar Belakang

Seiring pertumbuhan data bisnis, Anda sering perlu membersihkan data historis atau memperbarui sebagian besar isi tabel. Dua pendekatan umum berikut sama-sama membawa risiko signifikan:

  • Menulis skrip untuk membagi data: Menggunakan klausa LIMIT untuk membagi operasi DELETE atau UPDATE dalam halaman merupakan kesalahan umum. Karena LIMIT tanpa pemindaian indeks memaksa pemindaian seluruh tabel, tabel tetap dapat terkunci. Bahkan ketika pembagian diimplementasikan dengan benar, interval batch yang tidak disetel dengan tepat dapat menyebabkan keterlambatan replikasi parah antara database primary dan secondary.

  • Ekstraksi manual oleh DBA: Membagi set data besar secara manual memakan waktu, rentan kesalahan, dan sulit disesuaikan setelah proses dimulai.

Selain risiko tersebut, dua mode kegagalan tambahan dapat terjadi saat melakukan operasi langsung pada tabel besar:

  • Pernyataan SQL tunggal yang memengaruhi terlalu banyak baris dapat menyebabkan jumlah entri log melebihi batas maksimum, sehingga pernyataan tersebut gagal sepenuhnya.

  • Pernyataan SQL yang dieksekusi tanpa menggunakan indeks tertentu dapat menyebabkan penguncian tabel, meningkatkan beban database, dan dalam kasus parah berpotensi menyebabkan kegagalan bisnis.

DML tanpa penguncian menghilangkan kedua risiko tersebut dengan mengotomatiskan pembagian batch dan pembatasan kecepatan di dalam DMS.

Cara Kerja

DML tanpa penguncian memproses satu pernyataan SQL melalui tiga tahap:

  1. Pemisahan data — Mesin DMS menganalisis pernyataan tersebut dan membagi baris yang sesuai menjadi beberapa batch berdasarkan rentang indeks, sehingga menghindari pemindaian seluruh tabel.

  2. Eksekusi batch — DMS menjalankan pernyataan tersebut pada satu batch dalam satu waktu, hanya memegang kunci tingkat baris berdurasi singkat selama setiap batch.

  3. Interval buffer — Setelah setiap batch selesai, DMS menunggu sejenak sebelum memulai batch berikutnya. Interval ini memberi waktu bagi database secondary untuk mengejar ketinggalan dalam replikasi, sehingga menjaga keterlambatan replikasi primary-to-secondary tetap dalam batas yang dapat diterima.

Manfaat

  • Operasi perubahan data skala besar tidak mengganggu kelangsungan bisnis Anda.

  • Dampak terhadap kinerja dan penyimpanan database berkurang.

  • Efisiensi eksekusi tetap terjamin meskipun untuk perubahan data dalam jumlah besar.

Database yang Didukung

Mesin databaseInstans yang didukung
MySQLApsaraDB RDS for MySQL, PolarDB for MySQL, MyBase for MySQL, PolarDB for Xscale, database MySQL pihak ketiga
PostgreSQLApsaraDB RDS for PostgreSQL, PolarDB for PostgreSQL, MyBase for PostgreSQL, database PostgreSQL pihak ketiga
MariaDBApsaraDB for MariaDB, database MariaDB pihak ketiga
OceanBaseApsaraDB for OceanBase dalam mode MySQL
Oracle-compatiblePolarDB for PostgreSQL (Compatible with Oracle)

Batasan

Hanya pernyataan UPDATE, DELETE, dan INSERT...SELECT yang didukung.

UPDATE dan DELETE

BatasanDetail
Cakupan tabelHanya satu tabel
Klausa WHEREWajib. Untuk memperbarui atau menghapus semua baris, gunakan WHERE 1=1
SubqueryTidak didukung
Klausa LIMITTidak didukung — penggunaan LIMIT untuk paginasi manual memaksa pemindaian seluruh tabel, yang justru menyebabkan penguncian tabel yang ingin dicegah oleh fitur ini

INSERT...SELECT

BatasanDetail
SELECT scopeHanya satu tabel
Klausa WHEREWajib dalam klausa SELECT. Untuk memilih semua baris, gunakan WHERE 1=1
Klausa yang tidak diizinkanLIMIT, ORDER BY, dan GROUP BY tidak didukung dalam klausa SELECT

Kasus Penggunaan

  • Bersihkan data historis — Hapus baris yang tidak lagi diperlukan tanpa menghalangi operasi baca atau tulis pada tabel produksi.

  • Perbarui semua baris — Terapkan pembaruan kolom ke seluruh tabel tanpa menyebabkan keterlambatan replikasi atau gangguan layanan.

Langkah Berikutnya