所以,不但是在开发阶段,早在设计阶段就已经有了性能隐患。
4.5 升级硬件
不赘述。
5、 如何预防
首先要理解,在多并发的环境中死锁是不可避免的,只能通过合理的数据库设计、
良好的索引、适当的查询语句以及隔离等级等措施尽量减少死锁。
最开始列出了死锁的4个必要条件,只要想办法破坏任意1个或多个条件就可以避免产生死锁。下列方法有助于最大限度的降低死锁:
a) 按同一顺序访问对象;
?
b)避免事务中的用户交互,也就是在事务执行过程中不要包含用户交互的步骤; c)保持事务简短并在一个批处理中; d)SELECT语句加WITH(NOLOCK)提示;
SELECT * FROM TABLE1 WITH(NOLOCK);
SELECT * FROM TABLE2 WITH(NOLOCK);
这种写法在执行中不对查询到的资源加锁,就允许2条SQL可以并发地访问同一资源。但是加WITH(NOLOCK)提示可能会导致脏读!!!
e)使用较低的隔离级别;
暂不需要了解,不赘述。 f)使用绑定连接;
处理程序端的死锁,非数据库端,不赘述。
6、 结束语
项目实施过程中遇到死锁现象在所难免。通过前面的介绍,希望大家能够对它
有一个比较简单的认识,在遇到异常情况的时候不至于束手无策。如果以上内容有什么技术上不对的问题或观点,欢迎大家直接向我提出来一起研究沟通,也欢迎大家在遇到其它数据库方面的问题时能和我一起探讨,共同提高。