数据库死锁现象,分不够再加!

renmao 2002-12-16 10:51:41
一个系统,后台数据库用的是sql server 7,由于系统的内部逻辑比较复杂,对数据库
的操作比较频繁,而且很多存储过程都用到了临时表,子查绚和表连接,比较耗时间。
在少人用的时候,系统还算可以,但人一多,经常会出现死锁现象,SQL SERVER用CPU占
到99%。有时服务器,都要重启才能操作。小弟经验缺乏,不知道如何解决,请问各位,
1,造成数据库死锁的原因是什么?
2。在平时编程时应注意些什么来避免死锁的发生?
3。大家遇到这样的问题了么,是怎样解决的!
先谢了!
...全文
72 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
renmao 2002-12-16
  • 打赏
  • 举报
回复
哦,我一定仔细看看的
但我想怎么死锁的频率怎么那么大,几乎每天都有的
zqllyh 2002-12-16
  • 打赏
  • 举报
回复
我怀疑您有地方漏了提交的语句。仔细查查吧!(判断是否成功,if commit using sqlca;
else
 rollback using sqlca;
这两句一定要配套。
renmao 2002-12-16
  • 打赏
  • 举报
回复
现在是这样的,系统正在使用,数据量巨大,光商品表,就要100万,可想而知---真叫恐怖,在多个用户时,频繁访问,就死了。我想数据量太大,这应该是个原因,不过,总不能不让用户这么大数据吧,哈哈,希望大家继续,我一定加分!
dotnba 2002-12-16
  • 打赏
  • 举报
回复
说得真详细。学习
Drate 2002-12-16
  • 打赏
  • 举报
回复
我看还是去找一个开锁专家吧!

呵呵!

我认为,如果事务处理的时候做到了有始有终是不成什么问题的!

但还有一个问题是,如果你多个用户都在对同一个表进行操作,而且逻辑非常复杂,这时你的数据库的承受能力是不是有需要考虑的地方 ?特别在开始了事务处理的时候,其它用户是没有对这个表进行操作的权限的,只能等待,这样的话,你的作业就可能没有反应了!

我想如果你能够把你的表结构处理一下,使它的一些业务处理能够尽快的完成,对于你的软件应该有很好的帮助 !
愉快的登山者 2002-12-16
  • 打赏
  • 举报
回复
若数据量比较大,针对查询,最好建立相应的索引,这样可以提高查询速度。
zqllyh 2002-12-16
  • 打赏
  • 举报
回复
1、凡用到SQL语句后均提交,连SELECT都不放过(看您的设置及数据量)
2、凡用到大文本变量及存储过程的地方均设自动提交包括以存储过程为数据源的数据窗口。
愉快的登山者 2002-12-16
  • 打赏
  • 举报
回复
1,有多人在同一时间修改同一个表中的同一个记录;
2。对于修改数据库记录时,最好起用事物处理,而且在修改完毕后,进行事物的提交或回滚,将记录锁释放;
3。优化程序,在逻辑上应该尽量避免;采用方法2,同时多做测试,近早找出问题,并加以解决。
renmao 2002-12-16
  • 打赏
  • 举报
回复
对呀
我是用pb做前台的,自信事务在的程序做到有始有终的,这方面应该没有太大问题
,但还是经常会出现死锁现象,有时服务器,都要重启才能操作。设置锁可以解决吗,我没有设过,只是知道一点,能否具体赐教!
zqllyh 2002-12-16
  • 打赏
  • 举报
回复
EXEC sp_configure 'locks', '0'
zqllyh 2002-12-16
  • 打赏
  • 举报
回复
USE master
EXEC sp_configure locks', '0'
zqllyh 2002-12-16
  • 打赏
  • 举报
回复
估计锁不够大,把锁的数目加大,或者设成0。按理说您可以在管理那里看到锁不够用的情况。
如果是PB连接的前台,则是程序没有处理好,在提交上下功夫。
一般来说,只要牵涉事务的程序一定要做到有始有终,否则十分容易锁死数据库。在一些并发性较强的操作中,建议加上事务处理。
课程简介: 课程总计41课时,从什么是事务讲起,直到布式事务解决方案,很的0基础基础与提升系列课程。对于难以理解的知识点,全部用画图+实战的方式讲解。 第一部:彻底明白事务的四个特性:原子性、一致性、隔离性、持久性,用场景和事例来讲解。 第二部:实战讲数据库事务的6中并发异常:回滚丢失、覆盖丢失、脏读、幻读、不可重复读、MVCC精讲。 第三部:彻底搞清楚4种事务隔离级别:READ_UNCOMMITTED 读未提交隔离级别、READ_COMMITTED 读已提交隔离级别、REPEATABLE_READ 可重复度隔离级别、SERIALIZABLE 序列化隔离级别 第四部:彻底搞清楚MySQL的各种锁:行锁、表锁、共享锁、排它锁、Next-Key锁、间隙锁、X锁、S锁、IS锁、IX锁、死锁、索引与锁、意向锁等。 第五部:彻底搞清楚Spring事务的7种传播级别的原理和使用:PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER、PROPAGATION_NESTED布式事务的理论基础:RPC定理、BASE理论、XA协议都是什么,原理是什么,有什么关联关系 第六部布式事务的5种解决方案原理和优缺点:2PC两阶段提交法、3PC三阶段提交法、TCC事务补偿、异步确保策略、最大努力通知策略 第七部:阿里巴巴布式事务框架Seata:历经多年双十一,微服务布式事务框架,用一个Nacos+Spring Cloud+Seta+MySql的微服务项目,实战讲解阿里的布式事务技术,深入理解和学习Seata的AT模式、TCC模式、SAGA模式。 课程资料: 课程附带配套2个项目源码72页高清PDF课件一份阿里巴巴seata-1.1.0源码一份阿里巴巴seata-server安装包一份

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧