免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1993 | 回复: 7
打印 上一主题 下一主题

数据库怎么老是死锁?请高手指教! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-05 10:03 |只看该作者 |倒序浏览
我通过sp_lock看到数据库的表经常被锁住,然后通过sp_who看到阻塞进程是由这个用户引起的,而且这个用户并没有什么动作
     241 recv sleep   ws      ws                 0        ccs        AWAITING     COMMAND           0


我往往 kill 241 后数据库就正常了,请问是什么原因?谢谢!!!

论坛徽章:
0
2 [报告]
发表于 2004-03-05 10:33 |只看该作者

数据库怎么老是死锁?请高手指教!

一种可能的解析。此用户使用了游标,但事务提交后没有释放此游标,导致此游标使用的表仍被锁住。其他用户不能查询、修改、删除或插入数据,只能被阻塞。

论坛徽章:
0
3 [报告]
发表于 2004-03-05 12:30 |只看该作者

数据库怎么老是死锁?请高手指教!

可能的原因包括不当的sql,例如使用过高的isolation或者begin tran,修改后未提交等。
还有可能是lock scheme如果为allpages,使用datarows应该有所改善!
不当的index也可以

论坛徽章:
0
4 [报告]
发表于 2004-03-05 15:13 |只看该作者

数据库怎么老是死锁?请高手指教!

照估计应该有90%以上的可能是应用程序中某个不大显眼的地方没有做commit或者sqlca的auto commit没有被设置正确。

论坛徽章:
0
5 [报告]
发表于 2004-03-05 21:24 |只看该作者

数据库怎么老是死锁?请高手指教!

先用 sp_object_stats '00:20:00' 监视一段时间,把结果贴上来

论坛徽章:
0
6 [报告]
发表于 2004-03-07 17:04 |只看该作者

数据库怎么老是死锁?请高手指教!

检查 dead lock

(1)运行 sp_who,从 blk 列察看spid
(2)根据spid检查master..sysprocess表,察看当前操作相关的对象名称是什么。
(3)使用sp_object_stats 检查dead lock信息
(4)鉴别出运行的长事务,将其分成较短的事务。


仅供参考

论坛徽章:
0
7 [报告]
发表于 2004-03-08 09:44 |只看该作者

数据库怎么老是死锁?请高手指教!

12.5版本才能使用datarows锁。

论坛徽章:
0
8 [报告]
发表于 2004-03-08 11:08 |只看该作者

数据库怎么老是死锁?请高手指教!

[quote="xdf118"]12.5版本才能使用datarows锁。[/quote]

呵呵!11.9.2开始支持datarows lock,这也是相比11.0的最大改进了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP