51Testing软件测试论坛

标题: SQL2000数据库进程死锁。 [打印本页]

作者: 我是流氓    时间: 2006-11-24 08:42
标题: SQL2000数据库进程死锁。
当发生进程死锁时,局域网内的机器都不能访问SQL数据库(访问超时),引起死锁的机器的软件模块没有正在使用,关闭计算机或取消该进程,整个系统就可以正常工作了。请问各位有什么办法解决这个问题??sdlkfj7
作者: futogether    时间: 2006-11-24 10:00
造成数据库死锁的原因有很多,你是想问死锁的原因,还是系统超时的原因,这两者还是有区别的。


关于产生数据库性能问题的原因有很多,下面是几点:

单一类型事务的响应时间过长。造成这类问题的原因也很复杂,可以从几个方面考虑,1.数据库服务器负载过重,2.数据库的设计比较糟糕,3.单一事务的粒度过大,4.批任务对其他事务造成性能的影响。

并发处理能力差。这类问题主要是由于在并发执行中的某个实例以互斥方式对资源进行访问,造成了其他同类型用户必须等待该实例释放锁定的资源后才能执行。

锁冲突严重。资源锁定会造成数据库事务超时或死锁。而造成死锁必须具备几个条件:1.互斥条件,2.持有并等待条件,3.不可取代条件,4.环等待条件。
目前主流数据库管理系统主要是采用并发控制算法,导致应用系统实际使用时频繁发生死锁。

针对数据库的性能问题,一般的解决步骤有:
1.监视数据库性能相关的数据
2.定位资源占用较大的事务并做出必要的优化或调整
3.定位锁冲突,修改锁冲突发生严重的应用逻辑
4.对规模较大的数据或者无法通过一般优化解决的锁冲突进行分布处理。
作者: superstar    时间: 2006-11-24 17:27
楼上的分析的真好,我测试的系统也遇到了这个问题,还没有解决呢!sdlkfj5




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2