Я заново создал свой запрос:
MERGE [Unshipped] u
USING [Order] order or ON or.ID = u.ID
WHEN MATCHED AND u.Date <> or.Date
THEN
UPDATE
SET u.Date = or.Date
WHEN NOT MATCHED
THEN
INSERT (ID, FK, Date)
VALUES (or.ID, or.FK, or.Date)
Table2
В моем примере из реальной жизни это кажется мертвой блокировкой.В столбце идентификатора есть кластеризованный индекс.
Мое исследование привело меня к двум проблемам:
Часть MCH в MATCH проверяет индекс на совпадения, читает- блокировка этих строк / страниц по ходу дела.
Когда у него есть строка без совпадения, он сначала попытается вставить новую строку индекса, чтобы запросить запись строки / страницы.-lock ...
Это случай для этого запроса?Кто-нибудь может посоветовать мне еще?Каков наилучший подход, чтобы предотвратить это?Любая информация была бы отличной.