社区
疑难问题
帖子详情
求救! SQLSERVER死锁,崩溃了. 在线等!
luozhangwen
2012-10-15 04:41:56
并发操作, 并发量大概在5个左右, 每个并发量的数据量在5000左右, 500一次存储
同个事务操作是先删除, 后插入, 不知道为什么会死锁, 把并发给弄成串行就不死锁了, 但是串行太慢了~
各位大大帮帮忙啊, 非常感谢!
...全文
382
10
打赏
收藏
求救! SQLSERVER死锁,崩溃了. 在线等!
并发操作, 并发量大概在5个左右, 每个并发量的数据量在5000左右, 500一次存储 同个事务操作是先删除, 后插入, 不知道为什么会死锁, 把并发给弄成串行就不死锁了, 但是串行太慢了~ 各位大大帮帮忙啊, 非常感谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangdong441325
2012-10-18
打赏
举报
回复
我也想用数据库锁
ycwhhr
2012-10-16
打赏
举报
回复
表相互间的关系,逆向处理时子先主后,正常存储时主先子后。
以学习为目的
2012-10-16
打赏
举报
回复
楼上几位讲的你综合排查下你的故障,看看能不能解决你的问题
gogodiy
2012-10-16
打赏
举报
回复
使用SQL Server Profiler工具,选择Locks事件类的Lock:Deadlock(死锁)和Lock:Deadlock Chain(死锁链),然后跟踪看下你这5个并发,看看锁对应的SPID以及相关的先后顺序、发生时间等等,再进行判断。
对于代码,你可以将先删除,后插入放在一个事务中,然后写入存储过程。并发用户只调用这个存储过程,让MSSQL自己去根据数据库设置的事务等级自己去处理。
最后你要确实到底是死锁了,还是阻塞,还是正常的锁等待,这是完全不同的3个概念。
qurihong
2012-10-16
打赏
举报
回复
“先删除, 后插入”,删除时需要先scan找到这笔资料,问题就出在这里,“交叉的检索和插入”导致死锁,最简单的办法就是修改sql server的默认隔离级别read committed为read uncommitted
如果觉得不放心,可以考虑使用SNAPSHOT_ISOLATION
sqlfun
2012-10-15
打赏
举报
回复
1、机器未崩溃之前,人不能先崩溃
2、死锁其实没那么复杂,无非是A请求B时,需要顺序使用锁1和锁2;B请求A时,需要顺序使用锁2和锁1,谁也不让谁,结果就死锁了。
3、找死锁的方法建议使用profiler,找到根源就更容易解决问题了。
http://www.simple-talk.com/sql/learn-sql-server/how-to-track-down-deadlocks-using-sql-server-2005-profiler/
4、good luck
汤姆克鲁斯
2012-10-15
打赏
举报
回复
频率有多高啊?
是死锁还是阻塞?
大力水手
2012-10-15
打赏
举报
回复
我感觉你还是把语句贴出来,你的5个的意识也不太清楚什么意识..5个事务吗! 正常的锁等待不叫死锁.
發糞塗牆
2012-10-15
打赏
举报
回复
http://topic.csdn.net/u/20120504/14/f17df33b-e678-40f0-a7e9-64224a091c70.html
看看这些有没有帮助
發糞塗牆
2012-10-15
打赏
举报
回复
死锁这个范畴很大,你需要先找出哪个语句导致的。其实根源还是太慢了,并且占用资源太多,使得其他事务要等待,给你几个改进建议:
1、如果表很大,使用2005以后的分区表,这样扫描的范围小很多。
2、改进索引,往往索引不好,会导致i/O很大、速度慢。好的索引可以把一个大查询秒杀,这样就算占用稍微大一点的资源很快释放了。其他事务也不用等待太久。
3、由于你一个事务中用到了另外一个真在等待的事务,所以导致了死锁,这点尽量能分开操作就分开操作。把速度提高的时候,可以使用with nolock来减少锁的占用。
深入解析SQL Server
死锁
:诊断、解决与预防
本文聚焦SQL Server
死锁
问题,阐述了
死锁
概念、成因,如资源争用、长事务、缺少索引等。介绍了
死锁
检测方法,包括
死锁
图谱分析、
死锁
跟踪日志解读等。着重讲解了解决策略,如最小化锁定范围、调整事务执行顺序,以及预防措施,如优化索引、合理配置事务隔离级别,还通过测试案例加深理解。
SQLServer
中的事务加锁策略
本文介绍了
SQLServer
中事务的ACID特性,包括原子性、一致性、隔离性和持久性。详细阐述了数据库锁的种类,如共享锁、排它锁、更新锁以及意向锁,分析了它们的作用和避免数据错误的场景。并提供了锁兼容性图表和锁粒度的参考资料,还通过实例演示了不同锁类型在查询和更新操作中的应用,以及如何处理
死锁
问题。
数据库
死锁
详解:原因、检测与解决方案
本文深入分析数据库
死锁
问题。介绍
死锁
是事务操作资源时相互等待形成循环依赖,导致事务无法执行。阐述
死锁
成因、产生场景,如互斥等四个必要条件、互相锁定资源等。还给出检测方法,如用 SQL Server Profiler 等,以及多种解决方案,可降低
死锁
概率。
【数据库
死锁
随笔】
本文详细解析了
死锁
的概念,阐述了
死锁
产生的四个条件,并提供了避免
死锁
的方法,包括循环顺序操作、缩短事务长度、调整隔离级别等。此外,还介绍了如何通过SQL Server工具诊断和处理
死锁
问题,以及实用技巧如使用绑定会话和设置锁超时。
【数据库】锁表原因及处理
本文探讨了数据库锁表的概念、可能导致的问题,包括
死锁
的分析与原因,以及如何避免和解决
死锁
,包括MySQL、ORACLE和
SQLServer
的特定处理方法。
疑难问题
22,296
社区成员
121,728
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章