日期:2014-05-18  浏览次数:20516 次

mssql数据库频繁操作死锁,如何解决,有跟踪日志,谁能帮我分析下死锁的原因和如何解决呢
数据库有一个中端表,每个中端都要频繁的更新最后连接时间,语句都是单条的select和update,没有做事物,没有涉及多个表,但是大量的死锁下面的跟踪截图.

我不清楚这2个发生死锁的资源,是什么,我只对一个表select或update
请指教

------解决方案--------------------
典型的同时持有资源,得不到释放。

先从流程上是否可以解决,最后考虑事务的锁级别。
------解决方案--------------------
只有RID,没建立索引?
还有UPDATE 更新的顺序要一致,如果一下1,2, 另一下2,1,当然就像你上面的,二者等待了
------解决方案--------------------
with (nolock) 这样看行不
------解决方案--------------------
1.检查程序连线数据库的参数是什么,改为默认值试试.

2.查询语句(select)可以在表名后加(nolock).
------解决方案--------------------
使用行级锁,每个进程只对需要更新的行加锁

SQL code

update tb with (rowset) set colname=value

------解决方案--------------------

上面的命令写错啦,
使用行级锁,每个进程只对需要更新的行加锁

SQL code

update tb with (rowlock) set colname=value

------解决方案--------------------
探讨

update Account set lastConTime='2012-1-1 10:10:10' where Account='133333'
update Account set lastConTime='2012-1-1 10:10:14' where Account='144444'引用:
楼主提供下产生死锁的两个T-SQL内容,来进一……

------解决方案--------------------
SQL code

这两个结果贴出来看看
sp_helpindex Account 
sp_spaceused Account

下面这个的执行计划贴出来看看
update Account set lastConTime='2012-1-1 10:10:10' where Account='133333'