mssql数据库频繁操作死锁,怎么解决,有跟踪日志,哪位高手能帮小弟我分析下死锁的原因和怎么解决呢
mssql数据库频繁操作死锁,如何解决,有跟踪日志,谁能帮我分析下死锁的原因和如何解决呢
数据库有一个中端表,每个中端都要频繁的更新最后连接时间,语句都是单条的select和update,没有做事物,没有涉及多个表,但是大量的死锁下面的跟踪截图.
我不清楚这2个发生死锁的资源,是什么,我只对一个表select或update
请指教
------解决方案--------------------
典型的同时持有资源,得不到释放。
先从流程上是否可以解决,最后考虑事务的锁级别。
------解决方案--------------------
只有RID,没建立索引?
还有UPDATE 更新的顺序要一致,如果一下1,2, 另一下2,1,当然就像你上面的,二者等待了
------解决方案--------------------
with (nolock) 这样看行不
------解决方案--------------------
1.检查程序连线数据库的参数是什么,改为默认值试试.
2.查询语句(select)可以在表名后加(nolock).
------解决方案--------------------
使用行级锁,每个进程只对需要更新的行加锁
数据库有一个中端表,每个中端都要频繁的更新最后连接时间,语句都是单条的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
------解决方案--------------------
------解决方案--------------------
- SQL code
这两个结果贴出来看看 sp_helpindex Account sp_spaceused Account 下面这个的执行计划贴出来看看 update Account set lastConTime='2012-1-1 10:10:10' where Account='133333'