问题标签 [database-deadlocks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6011 浏览

mysql - Mysql死锁检测

MySQL是否总是自动检测死锁?或者在某些情况下 MySQL 无法确定它正在处理死锁?

0 投票
2 回答
18277 浏览

postgresql - 运行 UPDATE 时 PostgreSQL 中的死锁

我对 PostgreSQL 死锁的阅读有点困惑。

一个典型的死锁例子是:

但是,如果我将代码更改如下:

这里会有死锁的可能吗?

本质上我的问题是:在第二种情况下,PostgreSQL 是一个接一个地锁定行,还是锁定条件覆盖的整个范围WHERE

提前致谢!

0 投票
0 回答
333 浏览

sql - SqlServer:- 插入和查看数据时出现死锁和锁定问题

我有一个页面,在该页面中,我在另一个用户请求查看的同一时间点通过过程将值插入到 3 个表中。但是发生了DeadLock的错误。

而且我的插入过程也变慢了。比如 50 个用户在该表中并行插入数据,并且 15 个用户请求查看该数据。

在此处输入图像描述

我在所有三个表中都有 CusterIndex 和 Non ClusterIndex。其中启用了页级锁定和行级锁定。禁用它们会帮助我吗?

在此处输入图像描述

只有在进行查看或插入时,它才能正常工作。但是当同时过程开始加息时。它会触发“超时错误”或“死锁受害者”以供查看。并且锁越来越多,并且等待时间开始为 0.1< 分钟,然后逐渐增加。

提前致谢

0 投票
2 回答
1148 浏览

tsql - 如何防止在此 SQL 中发生死锁

首先,我不需要 100% 防止死锁,但我能做的任何事情来减少它们都会很好。

我有两张桌子SourceDest. Source 中有许多唯一值,我需要从中请求一个新值,Source并在这样做时将其移动到Dest.

我有以下sql:

当多个用户获得同一value行时,这偶尔会引发死锁。我该如何预防/减少这种情况?

我正在使用 SQL Server 2008

顺便说一句,还有其他列SourceDest我正在阅读/写入。为了简洁起见,这是一个简化。

谢谢

0 投票
2 回答
7162 浏览

sql-server-2005 - 如何消除 SQL Server 2005 中的死锁?

首先,我想知道 SQL Server 2005 中死锁的实际根本原因是什么。是因为当两个进程访问表中的同一行时?

无论如何,请考虑两个表_Table_Now_,并且_Table_History_两者都具有相同的结构。

假设有一列称为NAME

因此,当一个进程尝试使用 in 更新记录时NAME='BLUE'_Table_Now_首先,它需要将当前行NAME='BLUE'放入_Table_History_然后更新 _Table_Now_,并删除以前存在的行_Table_History_

删除时发生死锁。我不明白为什么?

请指导我!

0 投票
0 回答
128 浏览

sql-server - TDataSetProvider 和死锁

您能否列出 TDataSetProviders 中死锁的条件是什么?

我们得到了复杂的代码,并且死锁诅咒主要在桌子上的循环上。

更糟糕的是,我在 IDE 中调试时无法重现死锁,只能在午餐时重现。

你能提示在哪里看吗?

0 投票
0 回答
45 浏览

java - “(!Oracle.acquireLockNoWait)”的用法

我想知道“!Oracle.acquireLockNoWait”的确切功能,实际上这是一种调用 cron 作业的方法,但由于某种原因,我找不到正在运行的作业。所以只是想检查这段代码是否会导致阻塞或死锁。

我收到错误“正在处理另一个会话:”,这可能是什么原因?

0 投票
3 回答
5959 浏览

sql-server-2005 - 为什么我不能在不锁定 SQL Server 2005 中的整个表的情况下插入/更新数据?

我正在尝试在 SQL Server 表中插入/更新行(取决于它是否存在)。我正在多台机器上从多个线程执行 SQL,我想避免出现重复的键错误。

我在网上找到了很多解决方案,但它们都导致事务死锁。这是我一直在使用的一般模式:

我试过了:

  • WITH XLOCK代替UPDLOCK
  • SET TRANSACTION ISOLATION LEVEL SERIALIZABLE一开始是UPDLOCK
  • SET TRANSACTION ISOLATION LEVEL SERIALIZABLE并且没有表格提示

我还尝试了以下所有组合的模式:

我可以让它在没有死锁的情况下工作的唯一方法是使用WITH (TABLOCKX).

我使用的是 SQL Server 2005,SQL 是在运行时生成的,因此它不在存储过程中,并且一些表使用复合键而不是主键,但我可以在具有整数主键的表上重现它。

服务器日志如下所示:

模式明显不同,具体取决于使用的表提示(但进程总是在等待它们已经拥有的模式)。我见过 RangeS-U、RangeX-X 和 U。

我究竟做错了什么?

0 投票
1 回答
1666 浏览

database-deadlocks - SQL 死锁 在存储过程中插入更新语句

我有一个非常基本的表格,名为 Titles,如下所示,

只有一个索引是 TitleID 上的 PK Clustered Index

现在我通过 ReadCommitted 事务中的存储过程在该表中插入记录,

此存储过程将记录插入到 IsPrimary = 1 的表中,并将所有其他标题更新为 0

当我在多用户场景中测试这个时,我遇到了死锁问题。如果我从存储过程中删除 UPDATE 命令,那么一切都很好......

我尝试在查找列上创建非聚集索引,并在更新语句中尝试了 WITH (ROWLOCK) 提示,但似乎没有任何效果。

当我运行 sql 语句并查看估计的执行计划时,我可以看到都更新了聚集索引,我认为这是在多用户场景中失败的地方......

我相信这是一个相当简单的场景,很多人应该在高事务系统中实现这种行为,但我找不到任何关于如何处理/解决这个问题的信息,我们将不胜感激。

谢谢你。

0 投票
0 回答
298 浏览

oracle - 来自 weblogic 事务的死锁 oracle rac

最近我的数据库中的一个表被锁定。我正在使用 Oracle RAC,发送到数据库的事务由 weblogic 10.3.0 管理。我已经配置了多个数据源,并且我的事务启用了“支持全局事务”和“单阶段提交”选项。在该表被锁定后,我不知道为什么 weblogic 不终止此事务,我的问题是:

1 - ORACLE RAC 根据我的连接池配置锁定表的可能原因是什么?

2 - 为什么 weblogic 在超时后没有终止事务(对于这种情况,我将超时设置为 30 秒)?

更多信息:我正在使用瘦驱动程序将 weblogic 与 ORACLE RAC 连接起来

对于这种情况,我没有在日志中看到与死锁相关的错误或类似的错误:(