deadlock 相关问题

两个(或更多)操作需要重叠资源集的情况,两者都不能完成,因为它们无法获得完成操作和释放锁所需的所有锁。

使用不同索引导致死锁

以下测试用例会在 SQL Server 中导致死锁,但不会在 Oracle 中导致死锁。 流程 1 使用精确命中 where 子句选择主键列记录。使用一个索引。 进程 2 选择相同的...

回答 1 投票 0

防止两个属性相互依赖的死锁

如何基于彼此更改两个可观察属性,但防止死锁? 为了这个例子,我保持非常简单: 我正在数两件事,(1)物品和(2)容器......

回答 3 投票 0

防止两个属性相互依赖的死锁

如何基于彼此更改两个可观察属性,但防止死锁? 为了这个例子,我保持非常简单: 我正在数两件事,(1)物品和(2)容器......

回答 2 投票 0

MAUI 防止两个属性相互依赖的死锁

如何基于彼此更改两个可观察属性,但防止死锁? 为了这个例子,我保持非常简单: 我正在数两件事,(1)物品和(2)容器......

回答 1 投票 0

“锁定|通信缓冲资源”是什么意思?

我有一个错误日志报告死锁: 事务(进程 ID 55)在锁上死锁 |与另一个进程的通信缓冲区资源并已被选为死锁受害者....

回答 5 投票 0

插入重复键更新死锁

mysql版本:5.7 假设我有一个这样的表: 创建表测试 (`id` bigint(20) NOT NULL AUTO_INCRMENT, `unique_key` int(11) NOT NULL, `count` int(11) NOT NULL, 主键(`id`),

回答 1 投票 0

所有 goroutine 都在睡觉 - 死锁

对于我的要求之一,我必须创建N个worker go例程,这些例程将由一个监控例程进行监控。当所有工作例程完成时,监控例程必须结束。我的代码

回答 5 投票 0

在静态变量中引用子类

Intellij 检查工具警告在静态变量中引用子类不是一个好的做法,因为它可能会导致死锁。使用以下文本: 这次检查报告班级...

回答 2 投票 0

两个事务持有相同排它锁导致InnoDB死锁

我正在使用 InnoDB 运行 MySql v8.0。我有一个简单的事务,其中有一个 SELECT(不是 SELECT ... FOR UPDATE),后跟一个 INSERT。当许多数据库插入发生时,我经常遇到死锁......

回答 1 投票 0

mysql多次批量更新操作死锁

当我尝试进行批量更新时,出现以下异常。有多个线程同时运行,可能正在访问数据库中的一行。我正在进行多次批量更新。可以...

回答 1 投票 0

我的代码是否导致死锁?我不知道。有人可以确认或否定吗?

对于我新工作的一个新项目,技术主管和架构师要求我学习和使用boost::asio。具体来说是库的 thread_pool 类。 让我把事情放在上下文中。 我们正在建设一个

回答 1 投票 0

死锁发生得非常频繁

我的应用程序经常陷入僵局,因为 该应用程序有 50 到 60 个屏幕 我们使用 SQL 视图来显示列表屏幕 我们主要只使用 2 个表来存储所有数据,并且它有

回答 1 投票 0

更新同一张表时出现死锁

在一个过程中,我需要分离一个大表的 4k 条记录,以便在单独的游标中处理每一条记录。 更新队列 SET `状态` = '已入队', `hash` = new_hash -- 先前生成的...

回答 1 投票 0

两个进程是否有可能因两个接收缓冲区都已满而在阻塞 send()/receive() 调用时死锁?

假设我们有两个客户端通过 TCP 相互通信。 两者都在做大致相同的事情: recv(...) // 阻塞接收调用 做工作() send(...) // 阻止发送其他客户端。 方式...

回答 1 投票 0

带有信号量的多线程

所以基本上这就是我要解决的问题: 大卫、肖恩和弗兰克不断播种。大卫挖洞。那么肖恩 在每个洞里放一颗种子。弗兰克随后填补了这个漏洞。

回答 3 投票 0

SSIS:截断表语句导致表上的 LCK_M_SCH_S 锁定

我有一个 SSIS 包,其中包含 Begin 和 Commit/Rollback 事务块中的 2 个主要块 1. truncate table(使用truncate table查询) 2. 导入数据(从平面文件导入数据并

回答 2 投票 0

MySQL InnoDB v5.7 死锁场景

我们有 MySQL 5.7,经常因死锁情况而出现错误。最常见的错误查询涉及不同行集上的选择事务和更新操作...

回答 1 投票 0

单个更新查询是否应该在 postgres (CNPG) 中的同一个表上创建多个排他锁?

我的系统正在运行使用 CloudNativePG 管理的 postgres 实例;有一个主副本和几个副本。 当我运行像这样的查询时 update set = NO... 我的系统正在运行使用 CloudNativePG 管理的 postgres 实例;有一个主副本和几个副本。 当我运行这样的查询时update <table> set <boolean-column> = NOT <boolean-column>,需要一段时间(> 19 小时)才能更新约 1 亿行。我还应该提到,数据库中存在该表的视图(提及这一点是因为它可能与本文后面提到的REFRESH MATERIALIZED VIEW CONCURRENTLY相关)。经过检查,这就是我得到的: >=# SELECT l.pid, application_name, state, query, age(clock_timestamp(), state_change) AS change, age(clock_timestamp(), query_start) AS age, wait_event, mode, granted FROM pg_stat_activity p INNER JOIN pg_locks l on p.pid = l.pid WHERE query NOT LIKE '% FROM pg_stat_activity %' ORDER BY granted, age; pid | application_name | state | query | change | age | wait_event | mode | granted --------+------------------+--------+------------------------------------------------------------+-----------------+-----------------+--------------+------------------+--------- 874173 | psql | active | update <table> set <boolean-column> = NOT <boolean-column>; | 19:39:06.762432 | 19:39:06.76241 | DataFileRead | RowExclusiveLock | t 874173 | psql | active | update <table> set <boolean-column> = NOT <boolean-column>; | 19:39:06.762445 | 19:39:06.762419 | DataFileRead | ExclusiveLock | t 874173 | psql | active | update <table> set <boolean-column> = NOT <boolean-column>; | 19:39:06.762448 | 19:39:06.762424 | DataFileRead | ExclusiveLock | t 874173 | psql | active | update <table> set <boolean-column> = NOT <boolean-column>; | 19:39:06.762451 | 19:39:06.762427 | DataFileRead | RowExclusiveLock | t (4 rows) 同一个查询在同一个表上有多个 ExclusiveLock 锁有意义吗?它们不是由不同连接发出的 2 个单独的查询,因为 pid 是相同的;它在同一个进程中运行。 为什么它还有 RowExclusiveLock 锁,而且还是 2 个? 我从有关ExclusiveLock锁的文档中了解到,该锁只能由REFRESH MATERIALIZED VIEW CONCURRENTLY获取。 即使我没有在查询中明确要求发生这种情况,实例是否在内部运行并发操作来更新表? 同一个查询在同一个表上有多个 ExclusiveLock 锁有意义吗?它们不是由不同连接发出的 2 个单独的查询,因为 pid 是相同的;它在同一个进程中运行。 那些ExclusiveLock锁根本不在桌子上。包括 pg_locks.relation,您会发现它们不涉及任何特定对象(它显示 null)。 pg_locks.locktype 会告诉您这些都是用于事务处理: SELECT l.pid , application_name , state , query , age(clock_timestamp(), state_change) AS change, , age(clock_timestamp(), query_start) AS age, , wait_event , l.locktype , l.relation::regclass , mode , granted FROM pg_stat_activity AS p JOIN pg_locks AS l USING(pid) WHERE pid <> pg_backend_pid() --that's how you filter this query out ORDER BY granted , age; 为什么它还有 RowExclusiveLock 锁,而且还是 2 个? 一个RowExclusiveLock用于您正在更新的表,我猜另一个涉及其上的索引,更新也必须处理该索引。 pg_locks.relation::regclass 会告诉你这一点。 我从 ExclusiveLock 锁的文档中了解到,该锁只能由 REFRESH MATERIALIZED VIEW CONCURRENTLY 获取。 这是一个示例,而不是它出现的唯一情况。您只需使用 begin; 打开交易,不执行任何其他操作,您将为此获得 locktype='virtualxid'。 一旦你开始写作,你也会得到带有 locktype='transactionid' 的那个,因为这是 MVCC 需要开始担心你的行为的最早点。 即使我没有在查询中明确要求发生这种情况,实例是否在内部运行并发操作来更新表? 总体来说是这样。您可以通过异步行为设置对此进行一定程度的控制。 问题是,你在那里看到的是一个 pid。如果您确实让多个工作人员运行查询,您会在为 pid 中的任务部署的 different pg_stat_activity 下看到同一查询的多个实例, 所有这些都会共享一个 leader_pid。

回答 1 投票 0

Firebird 锁定并选择解锁字段

我有疑问 使用锁定从 FP_TASKS 中选择前 10 个 * 但我有多个客户端使用一个表,并且我需要为每个选定的客户端 10 行未锁定。 有什么办法可以做一些...

回答 1 投票 0

Java 线程转储分析:如何找到有关发生死锁的对象的更多信息?

我有一个 Java 线程转储,它清楚地表明我的应用程序出现死锁: “池-2-线程-1”: 等待锁定监视器 0x00007f17b0040120(对象 0x00000000f731a9e0,一个 com.MyClass...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.