首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

Sql死锁异常,如何排除。与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品

2012-07-04 
Sql死锁错误,怎么排除。与另一个进程已被死锁在lock 资源上,且该事务已被选作死锁牺牲品我查了一下,发现是

Sql死锁错误,怎么排除。与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品
我查了一下,发现是两个语句同时处理,然后就出现错误。与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品。请重新运行该事务。 


这两个语句是:
1、update [Table] set clicknum=clicknum+1 where id=123456
2、select * from [Table] where clicknum>5 order by NewDate Desc

其中clicknum是加了索引的,填充因子0.6。

为了解决这个问题,我将语句一改为两句,先获取点击数,再加一,然后再更新,问题消失。

我估计问题是 update [Table] set clicknum=clicknum+1 where id=123456 这个语句的问题
这个语句一开始是查clicknum的数值,是共享锁,
后赋值,就转为独占锁了。这样容易出问题。

不知道是不是这样的。这两个语句应该怎么改才不冲突呢?



[解决办法]
把第2句改为:
select * from [Table] with(nolock) where clicknum>5 order by NewDate Desc
允许脏读。

热点排行