我们来自五湖四海,不为别的,只因有共同的爱好,为中国互联网发展出一分力!

减少SQLServer数据库死锁的技巧

2014年05月22日18:36 阅读: 3383 次

标签: 减少SQLServer数据库死锁的技巧

如果两个用户进程分别锁定了不同的资源,接着又试图锁定对方所锁定的资源,就会产生死锁。此时,SQL Server将自动地选择并中止其中一个进程以解除死锁,使得另外一个进程能够继续处理。系统将回退被中止的事务,并向被回退事务的用户发送错误信息。

 

大多数设计良好的应用都会在接收到这个错误信息之后重新提交该事务,此时提交成功的可能性是很大的。但是,如果服务器上经常出现这种情况,就会显著地降低服务器性能。为避免死锁,设计应用应当遵循一定的原则,包括:

 

 

 

▲ 让应用每次都以相同的次序访问服务器资源。

 

▲ 在事务期间禁止任何用户输入。应当在事务开始之前收集用户输入。

 

▲ 尽量保持事务的短小和简单。

 

▲ 如合适的话,为运行事务的用户连接指定尽可能低的隔离级别。[适用于6.5,7.0,2000]

 

 

 

此外,对于SQL Server的死锁问题,下面是几则实践中很有用的小技巧。

 

 

■ 使用SQL Server Profiler的Create Trace Wizard运行“Identify The Cause of a Deadlock”跟踪来辅助识别死锁问题,它将提供帮助查找数据库产生死锁原因的原始数据。[适用于7.0,2000]

 

分享到: 更多
©2021 安全焦点 版权所有.
人才招聘联系我们