Проблемы с тупиком при выборе и обновлении операторов - PullRequest
0 голосов
/ 20 сентября 2019

У нас есть проблемы с тупиком в нашей системе Prod.(Это товар производителя).Вот график взаимоблокировок, который я получаю от Idera.

В основном оператор блокировки обновляется с оператором Select, оператор Select стал жертвой взаимоблокировки.

Оператор обновления:

UPDATE ard
SET ard.premanifest_flag = ISNULL(pka.premanifest_flag, N'N'),
    ard.work_type =
                   CASE
                     WHEN ISNULL(@in_vchOverrideWorkType, N'') = N'' THEN ISNULL(ard.work_type, ISNULL(pka.work_type, N'03'))
                     WHEN @in_vchOverrideWorkType = N'00' THEN ISNULL(ard.work_type, ISNULL(pka.work_type, N'03'))
                     ELSE @in_vchOverrideWorkType
                   END
FROM t_af_result_data ard
LEFT JOIN t_pick_area pka WITH (NOLOCK)
  ON ard.pick_area = pka.pick_area
  AND ard.wh_id = pka.wh_id
WHERE ard.batch_guid = @in_uiGuid
AND thread_guid = @in_uiThreadGui

Оператор выбора:

SELECT
  @v_nRowCount = COUNT(DISTINCT thread_guid),
  @v_nThreadErrorFlag =
                       CASE
                         WHEN (SELECT
                             COUNT(1)
                           FROM t_af_result_data ard1
                           WHERE ard1.thread_status = N'E'
                           AND ard1.batch_guid = @in_uiGuid)
                           > 0 THEN 1
                         ELSE 0
                       END
FROM t_af_result_data
WHERE ISNULL(thread_status, N'C') NOT IN (N'C', N'E')
AND batch_guid = @in_uiGui

Я создал некластеризованный индекс для t_af_result_data для столбцов (thread_status, batch_guid).некластеризованный индекс по столбцам t_af_result_data (pick_area, wh_id) некластеризованный индекс по t_pick_area (pick_area, wh_id).Однако тупик сохраняется, вы можете посоветовать?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...