创建新index解决并发update带来的死锁问题

当多个机器同时update同一条记录的时候,很容易引发死锁问题。因为采取的index用index scan而不是index seek,所以不止锁住一条记录。

比如下列的update语句,为TestLogID创建一条index。

UPDATE [dbo].[TestRecord] SET [LastModifiedDate] = getdate() Where [TestLogID] = 241373

UPDATE [dbo].[TestRecord] SET [LastModifiedDate] = getdate()
from [TestRecord] Where [TestLogID] = 241373
OPTION (TABLE HINT([TestRecord], INDEX (TestLogID_TestRecord)))

可以用下列sql来检测状况是否有改善

SELECT
object_name, CONVERT(XML, event_data), file_name, file_offset
FROM sys.fn_xe_file_target_read_file('*.xel', NULL, NULL, NULL)
where object_name = 'xml_deadlock_report'

原文地址:https://www.cnblogs.com/sui84/p/13794195.html