Sql server 2012 SQL Server 2012更新查询死锁
我们使用此查询在一个非常常用的表上遇到死锁:Sql server 2012 SQL Server 2012更新查询死锁,sql-server-2012,deadlock,Sql Server 2012,Deadlock,我们使用此查询在一个非常常用的表上遇到死锁: UPDATE ChatMessageReceiver With (RowLock) SET DeliveryDate = '05/31/2016 06:05:35', ReadDate = '05/31/2016 06:05:35', ModifiedDate = '2016-05-31T06:06:30.4263992' WHERE ChatMessageId = 'F19F4D1D-D2C9-401E-9999-2
UPDATE ChatMessageReceiver With (RowLock)
SET DeliveryDate = '05/31/2016 06:05:35',
ReadDate = '05/31/2016 06:05:35',
ModifiedDate = '2016-05-31T06:06:30.4263992'
WHERE
ChatMessageId = 'F19F4D1D-D2C9-401E-9999-264B8A4765C8'
AND ReceiverId = '73E6B553-ACAE-47C0-A0C9-29092F5722C8'
我们已经删除了所有索引(包括ID
列上的聚集索引),因为我们已经应用了行级锁定,ReceiverId
和ChatMessageId
的组合是唯一的
为什么会出现死锁?为什么要删除所有索引?由于索引,我们在插入时也会出现死锁,但删除索引至少有助于减少死锁。