全部产品
Search
文档中心

:Apa yang harus saya lakukan jika terjadi tunggu kunci baris pada instance ApsaraDB RDS for MySQL dan waktu tunggu kunci baris habis?

更新时间:Jun 25, 2025

Deskripsi masalah

Ketika sebuah sesi menunggu kunci eksklusif baris yang dipegang oleh sesi lain, terjadilah tunggu kunci baris. Jika waktu tunggu kunci baris habis, kesalahan berikut dilaporkan:
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

Penyebab

Dalam kebanyakan kasus, sesi yang memegang kunci eksklusif baris dengan cepat menyelesaikan operasi terkait dan melepaskan kunci tersebut. Kemudian, sesi yang menunggu kunci eksklusif baris dapat memperoleh kunci sebelum waktu tunggu habis dan melakukan operasi terkait. Kunci eksklusif baris dapat dilepaskan menggunakan commit transaksi atau rollback. Dalam beberapa kasus, instance RDS mungkin tidak menerima notifikasi bahwa aplikasi terputus dari database, sehingga sesi memegang kunci eksklusif baris untuk jangka waktu yang lama. Jika sesi lain ingin memegang kunci eksklusif baris, sejumlah besar tunggu kunci baris terjadi, dan waktu tunggu kunci baris habis.

Solusi

Metode yang disediakan dalam topik ini hanya cocok ketika terjadi tunggu kunci baris. Di ApsaraDB RDS for MySQL, periode waktu tunggu default untuk tunggu kunci baris adalah 50 detik. Anda dapat mengatur innodb_lock_wait_timeout ke nilai yang lebih besar untuk mensimulasikan situasi di mana tunggu kunci baris terjadi. Kami menyarankan agar Anda tidak mengatur innodb_lock_wait_timeout ke nilai yang lebih besar di lingkungan produksi.

  1. Gunakan Data Management (DMS) untuk masuk ke instance RDS Anda. Untuk informasi lebih lanjut, lihat Gunakan DMS untuk masuk ke instance ApsaraDB RDS for MySQL.
  2. Lakukan operasi berikut untuk melihat transaksi yang sedang dieksekusi dan transaksi yang menunggu kunci baris.
    • Eksekusi pernyataan SQL berikut untuk melihat transaksi yang sedang dieksekusi:
      SELECT * FROM information_schema.INNODB_TRX;
    • Eksekusi pernyataan SQL berikut untuk melihat transaksi yang menunggu kunci baris:
      SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
    • Eksekusi pernyataan SQL berikut untuk melihat transaksi yang sedang dikunci:
      SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
  3. Jika sebuah sesi diidentifikasi sebagai Blocker, sesi tersebut memegang kunci baris yang memblokir operasi DML dari sesi lain. Akibatnya, tunggu kunci baris terjadi dan waktu tunggu kunci baris habis. Jika transaksi untuk sesi tersebut dapat dirollback, Anda dapat melakukan rollback transaksi untuk melepaskan kunci baris.
  4. Jika masalah berlanjut, buka tab Blocking untuk mengidentifikasi sesi yang menyebabkan blokir untuk jangka waktu yang lama dan lihat detail tentang sesi tersebut. Untuk informasi lebih lanjut, lihat Lihat statistik pemblokiran instance ApsaraDB RDS for SQL Server.

Ruang lingkup penerapan

ApsaraDB RDS for MySQL