Когато физически прекъсвате връзката с клиент, вие не изпращате нормално прекъсване на връзката (което би причинило връщане назад) и MySQL протоколът не е много бъбрив, така че сървърът никога не знае, че клиентът не е там. Мисля, че това е недостатък в протокола, когато се сравнява с други системи за бази данни, където клиентът и сървърът говорят вътрешно много повече.
Така или иначе. Има две променливи, които можете да промените. Те по същество правят същото, но за различни клиенти.
Първият е wait_timeout и се използва от клиенти на приложения като java или php.
Другият е interactive_timeout и се използва от mysql клиента (както във вашите тестове)
И в двата случая сървърът прекъсва връзката след няколко секунди и при това връща всички транзакции и освобождава всички заключвания.