Ketika Anda secara fisik memutuskan klien, Anda tidak mengirim pemutusan normal (yang akan menyebabkan rollback) dan protokol MySQL tidak terlalu cerewet sehingga server tidak pernah tahu bahwa klien tidak ada di sana. Saya pikir ini adalah kekurangan dalam protokol ketika membandingkan dengan sistem database lain di mana klien dan server berbicara lebih banyak secara internal.
Bagaimanapun. Ada dua variabel yang bisa Anda ubah. Mereka pada dasarnya melakukan hal yang sama tetapi untuk klien yang berbeda.
Yang pertama adalah wait_timeout dan digunakan oleh klien aplikasi seperti java atau php.
Yang lainnya adalah interactive_timeout dan digunakan oleh klien mysql (seperti dalam pengujian Anda)
Dalam kedua kasus, server mematikan koneksi setelah beberapa detik dan ketika melakukannya, mengembalikan semua transaksi dan melepaskan semua kunci.