Jika Anda perlu memodifikasi sejumlah besar data tabel tanpa mengunci tabel tersebut, gunakan fitur Lockless Change di Data Management (DMS). Fitur ini membagi satu pernyataan SQL menjadi beberapa batch untuk dieksekusi, sehingga memungkinkan modifikasi data tabel tanpa penguncian dan mengurangi dampak operasi DML terhadap performa serta ruang database. Topik ini menjelaskan cara melakukan perubahan data tanpa kunci di DMS.
Prasyarat
Jenis database yang didukung:
Database engine Instans yang didukung MySQL ApsaraDB RDS for MySQL, PolarDB for MySQL, MyBase for MySQL, PolarDB for Xscale, database MySQL pihak ketiga PostgreSQL ApsaraDB RDS for PostgreSQL, PolarDB for PostgreSQL, MyBase for PostgreSQL, database PostgreSQL pihak ketiga MariaDB ApsaraDB for MariaDB, database MariaDB pihak ketiga OceanBase ApsaraDB for OceanBase dalam mode MySQL Oracle-compatible PolarDB for PostgreSQL (Compatible with Oracle) Instans harus berada dalam mode kontrol Stable Change atau Security Collaboration. Untuk informasi selengkapnya, lihat View the control mode.
Batasan
Hanya pernyataan UPDATE, DELETE, dan INSERT...SELECT yang didukung.
UPDATE dan DELETE
| Kendala | Detail |
|---|---|
| Cakupan tabel | Hanya satu tabel |
| Klausa WHERE | Wajib. Untuk memperbarui atau menghapus semua baris, gunakan WHERE 1=1 |
| Subkueri | Tidak didukung |
| Klausa LIMIT | Tidak didukung — penggunaan LIMIT untuk paginasi manual memaksa pemindaian seluruh tabel, yang menyebabkan penguncian tabel yang justru ingin dicegah oleh fitur ini |
INSERT...SELECT
| Kendala | Detail |
|---|---|
| Pilih cakupan | Hanya satu tabel |
| Klausa WHERE | Wajib dalam klausa SELECT. Untuk memilih semua baris, gunakan WHERE 1=1 |
| Klausa yang tidak diizinkan | LIMIT, ORDER BY, dan GROUP BY tidak didukung dalam klausa SELECT |
Prosedur
Masuk ke DMS 5.0.
Di bilah navigasi atas, pilih .
CatatanJika Anda menggunakan konsol DMS dalam mode simple, klik ikon
di pojok kiri atas. Di panel navigasi yang muncul, pilih .Konfigurasikan parameter tiket Lockless Change ticket dan klik Submit. Tabel berikut menjelaskan beberapa parameter tersebut.
CatatanContoh ini menunjukkan konfigurasi untuk instans dalam mode Security Collaboration. Untuk instans dalam mode Flexible Management atau Stable Change, Anda hanya perlu mengonfigurasi parameter Database dan SQL statements for change.
Parameter
Wajib
Deskripsi
Database
Ya
Cari dan pilih database target.
CatatanAnda harus memiliki izin untuk mengubah data di database target. Untuk informasi selengkapnya, lihat View your permissions.
Business Background
Tidak
Berikan konteks untuk perubahan guna mengurangi beban komunikasi.
Execution Method
Ya
Pilih metode eksekusi untuk tiket:
Ticket Submitter Executes Upon Approval
Automatically Execute Upon Approval
Last Approver Executes
CatatanAdministrator dapat memodifikasi daftar metode eksekusi di . Untuk informasi selengkapnya, lihat Configuration Management.
Affected rows
Ya
Perkirakan jumlah baris yang terpengaruh. Anda dapat menjalankan kueri
COUNTdi SQL Console untuk mendapatkan angka ini.CatatanJika data terus-menerus ditulis ke tabel, hitung hanya jumlah baris data yang sudah ada.
SQL Statements for Change
Ya
Masukkan pernyataan DML, seperti
UPDATE,DELETE, atauINSERT_SELECT.CatatanJika Anda memasukkan pernyataan DDL, Anda sedang melakukan tugas perubahan skema lock-free DDL. Untuk informasi selengkapnya, lihat Perform a lock-free schema change by using a Lockless Change ticket.
SQL Statements for Rollback
Tidak
Skrip balik untuk pernyataan dalam SQL statements for change. Skrip ini harus dapat dieksekusi.
SQL Text
Tidak
Parameter ini hanya muncul jika Anda memilih Text untuk parameter Rollback SQL. Masukkan pernyataan SQL rollback, yaitu kebalikan dari pernyataan SQL perubahan.
Attachment
Tidak
Parameter ini hanya muncul jika Anda memilih Attachment untuk parameter SQL Statements for Rollback. Klik File untuk mengunggah lampiran SQL rollback.
CatatanHanya file .txt, .zip, dan .sql yang didukung. Ukuran file tidak boleh melebihi 15 MB.
Change Stakeholder
Tidak
Pemangku kepentingan yang ditentukan dapat melihat dan berkolaborasi dalam tiket. Pihak non-pemangku kepentingan (kecuali administrator dan DBA) tidak dapat melihatnya.
Attachments
Tidak
Unggah lampiran untuk memberikan konteks tambahan untuk tiket ini.
Setelah mengirimkan tiket, Anda dapat mengaktifkan pemeriksaan latensi primary-secondary, menetapkan ambang batas, dan memodifikasi pernyataan SQL.
(Opsional) Aktifkan pemeriksaan latensi primary-secondary dan tetapkan ambang batas. Ini mencegah latensi primary-secondary yang berlebihan memengaruhi alih bencana instans.
Di bagian Basic Information, klik chunk option, lalu tetapkan ambang batas latensi primary-secondary yang wajar dalam satuan detik. Jika latensi primary-secondary melebihi ambang batas, eksekusi SQL akan dihentikan.
CatatanFitur ini saat ini hanya tersedia untuk database ApsaraDB RDS for MySQL.
(Opsional) Modifikasi pernyataan SQL.
Setelah mengirimkan permohonan, sistem secara otomatis melakukan pemeriksaan awal terhadap pernyataan SQL. Jika pemeriksaan awal gagal, Anda dapat mengklik Edit SQL, mengedit pernyataan berdasarkan alasan kegagalan, lalu mencoba lagi.
Klik Submit. Tiket untuk instans dalam mode Security Collaboration memerlukan persetujuan berdasarkan aturan yang dikonfigurasi, sedangkan tiket untuk instans dalam mode Stable Change disetujui secara otomatis.
Setelah tiket disetujui, klik Execute Change di bagian Execute pada halaman detail tiket.
CatatanAnda dapat melihat progres persetujuan di bagian Approval pada halaman detail tiket.
Konfigurasikan parameter eksekusi tugas.
Item Konfigurasi
Deskripsi
Execution Strategy
Running immediately: Opsi default. Tugas dieksekusi segera setelah Anda mengklik Confirm Execution.
Schedule: Pilih waktu mulai untuk tugas. Setelah Anda mengklik Confirm Execution, tugas dijalankan pada waktu yang ditentukan.
CatatanWaktu eksekusi aktual tugas terjadwal mungkin memiliki selisih ±1 menit.
Specify End Time
Tentukan waktu akhir untuk tugas. Jika tugas belum selesai pada waktu akhir yang ditentukan, sistem akan menghentikan eksekusi sisa tugas SQL. Ini mencegah tugas berjalan selama jam sibuk dan memengaruhi operasi bisnis.
CatatanWaktu akhir aktual tugas mungkin memiliki selisih ±1 menit.
Primary/Secondary Node Check
Mengaktifkan pemeriksaan ini memastikan sinkronisasi data real-time antara instans primer dan standby, ketersediaan tinggi, serta pemulihan cepat dari kegagalan.
Canary Release Type
Kebijakan untuk mengeksekusi pernyataan SQL dalam batch.
No Canary Release: DMS secara otomatis mengeksekusi semua pernyataan SQL dalam tugas.
Suspend after Executing the First SQL Statement: Setelah pernyataan SQL pertama berhasil dieksekusi, DMS secara otomatis menjeda tugas. Untuk melanjutkan, klik Retry. Sisa pernyataan SQL kemudian dieksekusi sekaligus tanpa jeda tambahan.
Suspend after Executing a SQL Statement: Tugas secara otomatis menjeda setelah setiap pernyataan SQL dieksekusi. Anda harus mengklik Retry secara manual untuk mengeksekusi pernyataan SQL berikutnya.
Klik Confirm Execution.
CatatanSaat tugas yang dijeda dimulai ulang, tugas tersebut dimulai dari awal.
Di bagian Execute, Anda dapat melihat status eksekusi tugas, pengaturan tugas, detail, dan Scheduling Logs.
Dokumen Terkait
Setelah melakukan perubahan data tanpa kunci, Anda mungkin juga perlu melakukan operasi berikut:
Kueri data tabel di jendela SQL. Untuk informasi selengkapnya, lihat Query data.
Ekspor data dari database Anda. Untuk informasi selengkapnya, lihat Export databases.
Ekspor set hasil SQL. Untuk informasi selengkapnya, lihat Export SQL result sets.
Operasi API berikut terkait dengan perubahan data tanpa kunci:
FAQ
Q: Apakah fitur perubahan data tanpa kunci mendukung operasi SQL kompleks?
A: Tidak. Misalnya, fitur ini tidak mendukung
CREATE_INDEXatau operasi multi-tabel seperti pernyataanDELETEyang menyertakanJOIN. Untuk informasi selengkapnya tentang jenis SQL yang didukung, lihat Limitations.Q: Apakah DMS Lockless Change mendeteksi kunci tabel dan pemblokiran?
A: Saat DMS melakukan perubahan data tanpa kunci, sistem membagi pernyataan SQL besar menjadi batch-batch kecil dan menjeda setelah setiap batch. Hal ini menghindari pemanfaatan sumber daya dalam waktu lama. Selama eksekusi, DMS tidak melakukan deteksi kunci baris terlebih dahulu. MySQL tetap mengunci baris yang dimodifikasi. Dampak keseluruhan minimal karena batch kecil dan jeda, tetapi ini tidak menjamin bahwa tabel tidak akan dikunci. Untuk perubahan skema tanpa kunci, DMS menggunakan tabel sementara untuk mensimulasikan pernyataan DDL Anda. Ini memeriksa terlebih dahulu apakah operasi tersebut akan menyebabkan penguncian atau pemblokiran tabel. Jika pemeriksaan menentukan bahwa operasi akan mengunci tabel, verifikasi gagal dan pesan ditampilkan.
Q: Bisakah verifikasi pemutaran ulang inkremental untuk tugas DMS Lockless Change disesuaikan?
A: Ya. Pertama, di halaman , cari dan aktifkan fitur "Allow adjustment of the playback data verification ratio for lockless change results".
Buka tiket DDL yang sesuai di konsol.
Di bagian eksekusi, klik Details.
Temukan skrip yang sesuai dan klik Execution Progress.
Rasio verifikasi ditampilkan di bagian bawah. Sesuaikan rasio sesuai kebutuhan. Satuannya adalah permil (‰).