-1

我有一个表,其架构部分如下所示:

在此处输入图像描述

SubId 列是 PK 并且是聚集索引。我有一个 C#(使用实体框架)应用程序,它将(仅插入)行插入到此表中。该应用程序是多线程的,我通常有四个线程同时运行,将行插入到该表中。有时,我会遇到如下所示的死锁:

在此处输入图像描述

我真的很困惑。显然我遇到了僵局,但我不知道如何。我严格执行插入操作,并且我的应用程序之外没有其他进程正在访问此表。

4

1 回答 1

0

即使使用插入,您也会遇到死锁。例如,假设你有CREATE TABLE test23 (id INT NOT NULL PRIMARY KEY);

然后

--Process 1 :
--1
BEGIN TRANSACTION;
INSERT INTO test23(id) VALUES (1);
-- Process 2:
--2
BEGIN TRANSACTION;
INSERT INTO test23(id) VALUES (2);


--Process 1 :
--3    
INSERT INTO test23(id) VALUES (2);

-- Process 2:
--4    
INSERT INTO test23(id) VALUES (1);
--Deadlock!

由于您没有提供有关您的表格和实际陈述的任何详细信息,因此很难说是否是这种情况,但我希望它能为您指明正确的方向。

于 2013-07-08T19:27:43.197 回答