如果应用实例在执行事务时崩溃,是否会导致死锁?

Will it lead to a dead lock if app instance crashes when performing a transaction?

假设我们在一笔交易中有三个SQL。应用程序实例执行开始事务,并执行第一个 sql,然后应用程序实例崩溃。会不会导致死锁或者先SQL锁定的资源永远不会释放?

如果不会导致死锁,dbms是如何实现这个目标的?是否使用超时机制?

如果您的应用程序崩溃,这意味着与数据库的连接丢失。

数据库服务器最终会注意到这一点并终止数据库会话。

我所知道的所有数据库系统都将通过回滚终止数据库会话,因此应用程序所做的任何事情都将被回滚并释放所有锁。所以不会有陷入僵局的危险。

具体是如何完成的,以及服务器需要多长时间才能注意到客户端 (=app) 已经消失,这取决于实际的 DBMS 产品。