2016-09-16 10 views
0

У меня есть связанный с схемой вид (SSMS 2008 R2), который запускает набор таблиц, поддерживаемых и обновляемых передним приложением. Ранее на этой неделе, после развертывания для обновления приложения, просмотр внезапно тупик-жертвы каждый раз, когда он запускался в Prod, несмотря на успешное выполнение в Dev thru Staging.VIEW неоднократно зашел в тупик командами на стороне приложения

Запуск трассировки и захват графа взаимоблокировки показал, что конкурирующий оператор DELETE поступает из приложения (он не выполняет записи UPDATE, а DELETE и INSERT).

Редактировать 1: взаимоблокировки вызываются конкурирующими командами на стороне приложения с блокировками уровня IX. ПРОСМОТР выпускает блокировки уровня S, но конкурирующие команды продолжают заходить в тупик, при этом запрос VIEW последовательно становится процессом жертвы. Установка изоляции на «read uncommitted» не решает проблему.

VIEW рекурсивно внешние соединения в одних и тех же таблицах несколько раз, чтобы создать связанную историю записей. Я подозреваю, что это функциональность, которая делает просмотр слишком сложным, чтобы избежать времени блокировок. Кажется, что он работает половину дней, а затем будет постоянно зависеть от других.

Это просто проблема пропускной способности, или есть лучший способ создания структур отчетности, которые могли бы устранить проблемы взаимоблокировки?

+0

Здесь слишком много ручных размахов, покажите нам код. Начните с определения вида, затем определения его поддерживающих таблиц и их индексов/ключей. – RBarryYoung

ответ

0

Если вы получаете много тупиковой ситуации в представлении, может оказаться целесообразным разбить его на большее количество более простых представлений - там, где привязанный к схеме вид имеет индекс, нарисованный из нескольких таблиц, он также может быть особенно подвержен проблемы с блокировкой.

 Смежные вопросы

  • Нет связанных вопросов^_^