Приведет ли это к мертвой блокировке, если экземпляр приложения выйдет из строя при выполнении транзакции? - PullRequest
0 голосов
/ 08 мая 2020

Предположим, что у нас есть три SQL в одной транзакции. Экземпляр приложения выполняет начальную транзакцию и выполняет первую sql, затем экземпляр приложения аварийно завершает работу. Приведет ли это к мертвой блокировке или ресурсы, заблокированные первым SQL, никогда не будут освобождены?

Если это не приведет к мертвой блокировке, как СУБД достигают этой цели? Используется ли механизм тайм-аута?

1 Ответ

0 голосов
/ 08 мая 2020

Если ваше приложение вылетает, это означает, что соединение с базой данных потеряно.

Сервер базы данных в конечном итоге заметит это и завершит сеанс базы данных.

Все системы баз данных, которые я знаю, завершат сеанс базы данных с откатом, поэтому все, что сделало приложение, будет отменено, и все блокировки будут сняты. Таким образом, нет опасности попасть в тупиковую ситуацию.

Как именно это делается и сколько времени требуется серверу, чтобы заметить, что клиент (= приложение) ушел, зависит от фактического продукта СУБД. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...