Jika Anda menggunakan InnoDB atau RDBMS transaksional tingkat baris, maka ada kemungkinan apa saja transaksi tulis dapat menyebabkan kebuntuan, bahkan dalam situasi yang sangat normal. Tabel yang lebih besar, penulisan yang lebih besar, dan blok transaksi yang panjang akan sering meningkatkan kemungkinan terjadinya kebuntuan. Dalam situasi Anda, mungkin kombinasi dari ini.
Satu-satunya cara untuk benar-benar menangani kebuntuan adalah dengan menulis kode Anda untuk mengharapkannya. Ini umumnya tidak terlalu sulit jika kode database Anda ditulis dengan baik. Seringkali Anda cukup memasukkan try/catch
di sekitar logika eksekusi kueri dan mencari jalan buntu saat terjadi kesalahan. Jika Anda menangkapnya, hal yang biasa dilakukan adalah mencoba mengeksekusi kueri yang gagal lagi.
Saya sangat menyarankan Anda membaca halaman ini dalam panduan MySQL. Ini memiliki daftar hal yang harus dilakukan untuk membantu mengatasi kebuntuan dan mengurangi frekuensinya.