Sql server 日记 (事物日志死锁时的处理方法)

来源:互联网 发布:qq农场捕鱼枪升级数据 编辑:程序博客网 时间:2024/06/03 12:50

最近开发部的一个朋友问我,他编写的一个程序在少量用户访问的时候没有问题,但人数一多就会出问题,他问我是不是服务器有问题

 

根据他的描述我开始对他的应用开始查找问题。

 

首先先检查脚本,发现执行没有问题,但又一次偶然间运行脚本发成错误,错误信心好为1222。

 

我们开始怀疑是事物死锁造成的问题,当访问量多的时候,情况便得明显了。

 

使用 select * from sys.dm_tran_locks

 

发现他的 request_reference_count 这个数字比较高,并且他的request_mode 请求模式是X 排它锁

 

原来他在大量的插入数据,而这时他的表被别人大量的读操作。

 

给他的建议由以下几点

 

不要再事物中使用过于复杂的语句

 

不要再事物中要求有用户响应的操作

 

如果表比较大可以采用分区表来解决问题

 

并且我给他的设置了 SET LOCK_TIMEOUT = 500  单位ms

 

情况有所好转