在試圖IX鎖我不明白爲什麼這種僵局正在發生。 右邊的交易影響(更新)只有一行,它看起來像這樣:
update table1
set column1 = 'value1'
where key1 = 1
我假設IX請求是其中行(正在更新)所在的頁面,對不對?但這不可能,因爲這個頁面上有一個共享鎖。或者是其他頁面的IX請求?
也有可能防止IX鎖(也許一些提示)?因爲我知道我只更新了一行,而且無意更新此事務中的其他任何內容。
更新:
表1 - 由五列(改名)和一個主鍵:
CREATE TABLE [dbo].[Table1](
[Key1] [int] IDENTITY(1,1) NOT NULL,
[Column1] [nvarchar](50) NOT NULL,
[Column2] [int] NOT NULL,
[Column3] [nvarchar](50) NULL,
[Column4] [int] NOT NULL,
constraint PK_Key1 primary key([Key1])
)
其他事務由包含了很多連接表的一個單一的SELECT語句,包括表1 - 出於安全原因,我不能在這裏透露它。
表(包括索引)和選擇查詢的DDL將會有所幫助。 – Bryan 2015-03-03 14:05:47
*其他*交易做了什麼? – usr 2015-03-03 14:09:32
出於安全考慮,我無法回答你的問題 - 至少,你可以嘗試將其他查詢精確地提取到「column1」和「key1」所做的事情上?你的'UPDATE'可能不是問題 - 即使它鎖定了正確的行並且沒有其他東西,如果其他查詢需要觸摸所有東西,這仍然無濟於事。你只能通過查看一個參與方來診斷死鎖。 – 2015-03-03 15:24:02