这篇文章提出了避免死锁的重要提示 SQL Servers
尽管 SQL Server 在过去几年见证了巨大的发展,用户仍然经常面临死锁的情况。 理想情况下,数据库服务器应该能够检索多个请求,但它通常会导致阻塞。 一个进程等待另一个资源释放的冲突称为块。 然后是死锁。
想象这样一种情况,一个人要求第二个释放资源,而第二个在等待第一个释放。 于是,双方都陷入了僵局。 由于两个进程都被锁定并且需要另一个进程释放资源或锁定,所以没有一个进程可以继续。
在与 SQL servers,死锁很常见,它们会阻碍整个过程。 完全避免死锁是不可能的,但是可以肯定地减少产生死锁的机会。
死锁麻烦

应该注意的是,死锁直接影响性能并且可能停止数据库的处理。
1.保持顺序不变
如果资源没有按照预定义的顺序处理,死锁必然会发生。为了最大限度地减少死锁,所有并发事务都应该按照预定义的顺序访问对象。数据库管理员应该设计一套清晰的数据库对象访问规则。通常,锁监视器会执行死锁检查,并在检测到死锁时选择一个死锁牺牲进程并回滚其事务。这样,所有锁都会被释放,之前的会话就可以继续执行进程。死锁牺牲进程的选择依据是服务器设置的死锁优先级或回滚成本。
2. 交易时的限制
您可以限制用户在交易处理时输入任何类型的数据,您可以在交易之前更新数据以避免死锁。 此外,尽量将用户交互保持在最低水平,因为它会影响速度。 理想情况下,事务应该短而快以避免死锁。 应用程序的设计方式应使其在最短的时间内获取锁并尽快释放它们。
3.NOLOCK提示
当有人在 SQL 默认隔离级别对表运行查询时,表将被锁定,下一个查询必须等待释放。 NOLOCK 提示在这种情况下很有用,因为它允许覆盖表的锁定并且其他查询可以轻松访问。
4.使用绑定连接
如果同一个应用程序可以打开两个或多个可以相互协作的连接,那么它就不会产生死锁。 这就是为什么建议使用绑定连接。
死锁并不是您在处理一个问题时可能遇到的唯一麻烦 SQL Server 数据库。 事实上的事件 sql损坏 更有可能让你悲伤。 为避免数据丢失情况,请投资强大的恢复工具,例如 DataNumen SQL Recovery.
作者简介:
Victor Simon 是一位数据恢复专家 DataNumen, Inc.,它是数据恢复技术领域的世界领先者,包括 主数据库恢复 和sql恢复软件产品。 欲了解更多信息,请访问 https://www.datanumen.com/