Saya menduga ini adalah kasus tepi yang tidak layak untuk dibuat lebih efisien. Perhatikan bahwa Anda harus mendapatkan 3 sesi mencoba mengambil baris yang sama -- jarang terjadi. Dan Anda melakukan ROLLBACK -- juga jarang. Jadi kebuntuan yang terjadi memang berlebihan, tapi tidak layak untuk diperbaiki. Untuk alasan ini, seseorang harus siap untuk menangani kebuntuan di mana-mana.
FYI, Jika ini adalah 3 node dari cluster Galera, akan ada kesalahan pada COMMIT
bahwa kode harus menangani. Saya menduga ada lebih banyak kombinasi dari hal-hal aneh yang terjadi jika Anda menerapkan transaksi ini (dengan rollback atau commit) beberapa kali ke beberapa node.
Sekarang untuk pertanyaan Anda... Agaknya kebuntuan tidak terjadi karena salah satu utas mendapat kunci eksklusif dan yang lainnya dipukul dengan "tunggu" alih-alih "jalan buntu".