När du fysiskt kopplar bort en klient skickar du inte en normal frånkoppling (vilket skulle ha orsakat en återställning) och MySQL-protokollet är inte särskilt pratsamt så servern vet aldrig att klienten inte finns där. Jag tror att detta är ett fel i protokollet när man jämför med andra databassystem där klienten och servern pratar internt mycket mer.
I alla fall. Det finns två variabler som du kan ändra. De gör i princip samma sak men för olika kunder.
Den första är wait_timeout och det används av programklienter som java eller php.
Den andra är interactive_timeout och den används av mysql-klienten (som i dina tester)
I båda fallen avbryter servern anslutningen efter ett antal sekunder och när det görs återställs alla transaktioner och släpper alla lås.