Блокировка FOR UPDATE не снимается при разрыве соединения с базой данных

У меня есть простая хранимая процедура, и для целей тестирования я закомментировал оператор COMMIT.

BEGIN

DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
    ROLLBACK; 
    RESIGNAL;  
END;

    START TRANSACTION; 
        SELECT * FROM Kimmel_tree FOR UPDATE;
        INSERT INTO Kimmel_tree (name, guid) VALUES('abc', 'abcd');         
    #COMMIT;
END

Я хотел проверить, что произойдет, если интернет-кабель будет отключен, а транзакция еще не совершена. В результате транзакция откатывается, но блокировка всей таблицы не снимается. В результате я ничего не могу сделать со столом. Иногда требуется до двадцати минут, чтобы снять блокировку просто так. Как я могу убедиться, что используемые ресурсы разблокированы при ROLLBACK?


person niks    schedule 03.05.2019    source источник
comment
Вы уверены, что транзакция отменена? Если вы отключите кабель, транзакция, скорее всего, останется там, пока не истечет какой-то тайм-аут, и тогда блокировки будут сняты.   -  person Shadow    schedule 03.05.2019
comment
А, нашел точные настройки таймаута.   -  person Shadow    schedule 03.05.2019
comment
@Shadow Да, когда таблица снова становится доступной, я вижу, что оператор INSERT был отменен. Не могли бы вы поделиться, какие настройки тайм-аута вы нашли?   -  person niks    schedule 03.05.2019
comment
@Shadow О, не заметил дубликат! Спасибо, что указали на это!   -  person niks    schedule 03.05.2019