`
kingsui
  • 浏览: 192496 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SQL Server中死锁的原因及解决办法

阅读更多

其实所有的死锁最深层的原因就是一个:资源竞争。

表现一:

一个用户A 访问表A(锁住了表A),然后又访问表B,另一个用户B 访问表B(锁住了表B),然后企图访问表A。这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B,才能继续,好了他老人家就只好老老实实在这等了。

同样用户B要等用户A释放表A才能继续这就死锁了。

解决方法:

这种死锁是由于你的程序的BUG产生的,除了调整你的程序的逻辑别无他法。

仔细分析你程序的逻辑:

1:尽量避免同时锁定两个资源;

2: 必须同时锁定两个资源时,要保证在任何时刻都应该按照相同的顺序来锁定资源。

表现二:

用户A读一条纪录,然后修改该条纪录,这是用户B修改该条纪录,这里用户A的事务里锁的性质由共享锁企图上升到独占锁(for update),而用户B里的独占锁由于A有共享锁存在所以必须等A释放掉共享锁,而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁,于是出现了死锁。

这种死锁比较隐蔽,但其实在稍大点的项目中经常发生。

解决方法:

让用户A的事务(即先读后写类型的操作),在select 时就是用Update lock

语法如下:

select * from table1 with(updlock) where ....
分享到:
评论
1 楼 Jatula 2008-03-27  
长知识,原来一直没用过with这个东西,看来要学习了;

相关推荐

    SQL Server死锁产生的原因及解决办法

    SQL Server死锁是数据库系统中常见的问题,它发生在两个或多个事务之间,因为它们相互等待对方释放资源,导致事务无法继续执行。理解死锁的原因和解决策略对于优化数据库性能至关重要。 首先,我们要深入理解死锁的...

    SQL Server死锁的解除方法

    "SQL Server死锁的解除方法" SQL Server死锁是指在多个事务之间的资源竞争时,出现的循环等待资源的现象。死锁会导致系统性能下降,甚至会导致系统崩溃。因此,解决SQL Server死锁是非常重要的。 SQL Server死锁的...

    SQLServer排查死锁

    ### SQL Server 死锁排查与解决方法 #### 一、SQL Server Profiler 监控数据库死锁 在处理SQL Server数据库中的死锁问题时,一个非常实用的工具就是SQL Server Profiler。它可以帮助我们捕捉到数据库运行过程中的...

    sqlserver如何快速查询死锁语句

    本文将详细介绍如何在SQL Server中快速查询并解决死锁问题。 首先,我们要检查是否有未提交的事务。未提交的事务可能会导致阻塞其他事务,进一步引发死锁。以下是一段SQL查询语句,用于找出所有未提交事务的详细...

    SQL SERVER 死锁的解决之道

    本文将深入探讨SQL Server死锁的概念、原因、检测方法以及如何有效地解决和预防死锁。 1. **死锁的概念** 死锁是系统资源分配的一种状态,其中两个或更多的事务相互等待对方释放资源,形成一个循环等待链,导致...

    自动杀掉SQLSERVER中的死锁进程

    本过程自动捕捉SQLSERVER中的死锁进程并且自动杀掉

    SQL Server死锁总结

    ### SQL Server死锁总结 #### 一、死锁原理 死锁是计算机系统中常见的问题之一,特别是在数据库管理系统中,由于并发控制不当可能导致系统性能下降甚至完全停止响应。在SQL Server中,死锁指的是两个或多个事务...

    浅析SQL SERVER死锁产生的原因及解决.pdf

    在探讨SQL Server数据库中死锁产生的原因及其解决方法之前,首先要了解死锁的基本概念。死锁是指在多线程系统中,两个或多个线程之间形成了循环依赖关系,导致它们都在等待对方释放资源,从而都无法继续执行下去的一...

    Sqlserver分析死锁进程

    SQL Server提供了多种工具和方法来检测和分析死锁,以便管理员能够及时发现并解决问题。本文将详细介绍如何在SQL Server中分析死锁进程,特别是如何通过存储过程来捕捉和分析死锁信息。 ### 死锁分析存储过程 在...

    查询SQL server数据库死锁存储过程

    这对于诊断和解决SQL Server中的死锁问题非常有帮助。此外,它还展示了如何使用SQL Server的系统表、函数和命令来实现这一目标。对于SQL Server管理员和开发人员来说,掌握这样的工具和技术是非常重要的。

    通过SQL Server Profiler来监视分析死锁

    在SQL Server数据库管理中,死锁是一...在提供的文件"sql server 死锁.wps"中,你可能会找到更具体的案例分析和解决方法,进一步加深对死锁的理解。记得定期检查和监控数据库的死锁情况,以便及时发现并处理潜在问题。

    SQL Server死锁查询

    ### SQL Server死锁查询知识点详解 #### 一、SQL Server中的死锁概念 在SQL Server中,当两个或多个事务互相等待对方释放资源时就会发生死锁。这通常发生在两个或更多的事务请求锁定同一资源的不同部分(如行、页...

    在SQL Server 2005中解决死锁问题

    在SQL Server 2005中,死锁是数据库系统中常见的问题,通常发生在两个或多个事务互相等待对方释放资源时。这种情况下,数据库管理系统会选择牺牲其中一个事务来解除死锁状态,即回滚该事务并抛出一个错误。SQL ...

    Sql Server 查询死锁进程及抛弃进程 ..txt

    在sql server 运行过程中,容易产生死锁,该代码提供了一个查询死锁进程并抛弃的方法。供参考。

    sql server 死锁检测

    - **死锁图分析**:通过查看SQL Server生成的死锁图来了解死锁的具体原因,从而优化代码逻辑。 总之,理解并有效处理SQL Server中的死锁问题对于确保系统的稳定性和性能至关重要。通过上述方法可以有效地管理和避免...

    sqlserver 解除死锁

    sqlserver 解除死锁,网络上看到的很实用分享给大一起用

    HIS系统SQL Server数据库死锁问题的分析与解决.pdf

    HIS系统SQL Server数据库死锁问题的分析与解决 SQL Server数据库是HIS系统中非常重要的一部分,负责存储和管理大量的医疗数据。然而,在实际应用中,SQL Server数据库可能会出现死锁问题,导致系统性能下降, thậm...

    sqlserver死锁处理

    本节将详细介绍如何检测 SQL Server 中的死锁,并提供一种实用的解决方案来处理这些死锁问题。 ##### 1. 检测死锁 在 SQL Server 中,可以通过多种方式检测到死锁的发生: - **SQL Server 自动报告**:当 SQL ...

    sqlserver死锁查询

    用于sqlserver优化使用,可定位死锁,并查询死锁语句。

Global site tag (gtag.js) - Google Analytics