-1
我有一個表,其模式在某種程度上,如下所示:SQL Server 2012中 - 僵局聚集索引插入
的子ID列是PK,是一個聚集索引。我有一個C#(使用實體框架)應用程序插入(只插入)到這個表中的行。該應用程序是多線程的,我通常有四個線程同時運行,將行插入此表中。有點頻繁,我會得到一個僵局,看起來如下:
我真的被這個迷惑。顯然我陷入了僵局,但我不知道如何。我嚴格執行插入操作,除了我的應用程序外,沒有任何其他進程正在訪問此表。
它看起來像你通過插入重複值來實現這一目標?過程1插入值1和2.過程2插入值2和1.這不會發生在我的應用程序中。我不會有多個線程試圖插入重複的PK值。每個線程都嵌入獨特的PK值。 – Hosea146
@ Hosea146:只是一個猜測:它可能是由於鎖定升級 - SQLServer可能決定阻止該頁面(只是猜測) – a1ex07
另外,如果使用'serializable'隔離級別,則可能在以下情況下發生死鎖:process 1 :'從test23中選擇id = 2; insert into test23(id)values(1)',process 2:'select from test23 where id = 1;插入test23(id)值(2)'。 – a1ex07