假设一次交易中有三个SQL。应用实例执行开始事务,并执行第一个sql,然后应用实例崩溃。它会导致死锁,还是将永远不会释放第一个SQL锁定的资源?
如果不会导致死锁,dbms如何实现该目标?是否使用超时机制?
如果您的应用程序崩溃,则意味着与数据库的连接已丢失。
数据库服务器最终将注意到这一点,并将终止数据库会话。
我知道的所有数据库系统都将通过回滚来终止数据库会话,因此应用程序所做的任何事情都会被回滚并释放所有锁。因此,没有陷入僵局的危险。
但是,具体如何完成以及服务器注意到客户端(= app)消失所需的时间,取决于实际的DBMS产品。