大家在进行WEB开发时.不知道是否遇到过如下问题
事务(进程ID 81)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品.请重新运行该事务.
或页面请求阻塞.返回很慢....
产生原因:数据库中事务发生死锁或阻塞。
解决方法。降低数据库发生死锁与阻塞的概率
1:修改数据库隔离级别。使用行版本控制级别,设置数据库隔离级别为READ_COMMITTED_SNAPSHOT
ALTER DATABASE meeting
SET READ_COMMITTED_SNAPSHOT ON;
GO
2:如果不修改数据库隔离级别。请在查询语句上手动设置其按 NOLOCK查询方式。或在使用事务时。手动设置基事务级别为READ COMMITTED
3:代码规范。
按同一顺序访问对象(如表)比如在两个事务中同时使用A,B两个表。在事务中要顺序的访问两个表。避免交叉。
避免事务中出现与用户交互情况。如在程序中先开启事务。在等待用户输入。然后判断其是否成功。再决定是否提交事务。这是不可取的。
使用较低的隔离级别。可以指定某一事务的运行级别。或使用1方法。使用基于行版本控制的数据库级别。
使用绑定连接。
在编写代码时一定要注意代码的规范.防止发生死锁与阻塞的概率