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
的组合是唯一的


为什么会出现死锁?

为什么要删除所有索引?由于索引,我们在插入时也会出现死锁,但删除索引至少有助于减少死锁。