SQL тупик из-за индекса

У меня проблема тупика между вставкой и выделением

Соединение А:

  1. Вставляет запись в таблицу MyTable (X блокировка записи)
  2. Обновляет некластеризованный индекс MyTable_Index (запрашивает X-блокировку для записи индекса)

Соединение Б:

  1. Использует MyTable_Index для поиска записей с определенным назначением (столбец MyTable) (S-блокировка для записи индекса)
  2. Возвращает (SELECT) запись MyTable через индекс. (это подзапрос, который последовательно обновляет запись) (запрашивает S-блокировку записи)

Поэтому, когда A вставляет (шаг 1) и B использует индекс (шаг 1), кажется, что возникает тупик. Соединения A и B оба используют подсказку ROWLOCK.

Есть ли способ указать для соединения B, что MyTable_Index не должен быть заблокирован, как NOLOCK для таблицы, но теперь для индекса?

Или какой-то другой хитрый трюк (кроме удаления индекса или использования кластерного индекса)?

С нетерпением ждем некоторых умных решений:-)

0 ответов

Другие вопросы по тегам