SQL тупик из-за индекса
У меня проблема тупика между вставкой и выделением
Соединение А:
- Вставляет запись в таблицу MyTable (X блокировка записи)
- Обновляет некластеризованный индекс MyTable_Index (запрашивает X-блокировку для записи индекса)
Соединение Б:
- Использует MyTable_Index для поиска записей с определенным назначением (столбец MyTable) (S-блокировка для записи индекса)
- Возвращает (SELECT) запись MyTable через индекс. (это подзапрос, который последовательно обновляет запись) (запрашивает S-блокировку записи)
Поэтому, когда A вставляет (шаг 1) и B использует индекс (шаг 1), кажется, что возникает тупик. Соединения A и B оба используют подсказку ROWLOCK.
Есть ли способ указать для соединения B, что MyTable_Index не должен быть заблокирован, как NOLOCK для таблицы, но теперь для индекса?
Или какой-то другой хитрый трюк (кроме удаления индекса или использования кластерного индекса)?
С нетерпением ждем некоторых умных решений:-)