2016-09-09 2 views
1

У меня проблема с взаимоблокировками все время. Приложение имеет более 1000 таблиц, а количество пользователей - в среднем 100. Когда я проверил блокировку типа эскалации с этим запросом, все таблицы с «TABLE»Блокировка SQL Server Эскалация всех таблиц с «ТАБЛИЦА»

SELECT lock_escalation_desc FROM sys.tables 

Является ли это поведение по умолчанию? Нет с ROW или PAGE? Я проверил другое приложение на другом сервере, и все таблицы также «ТАБЛИЦА».

Спасибо.

+0

это зависит от типа блокировки, кажется, что ваша блокировка только на столе –

ответ

1

Да, это по умолчанию эскалация уровень и абсолютно нормальный.

Возможно, вы смущены тем, что такое эскалация? Это то, что происходит, когда SQL Server удерживает слишком много блокировок на более низком уровне и консолидирует их по производительности и ресурсам.

Вам нужно будет проверить allow_row_locks и allow_page_locks в sys.indexes, чтобы узнать, есть ли у вас проблема с конфигурацией, которая предотвращает эти блокировки нижнего уровня.

w.r.t. уровень эскалации, если вы используете секционированные таблицы, тогда вы могли бы вместо этого рассмотреть AUTO, чтобы избежать блокировки всего этого. Но причина, по которой это не является дефолтом, заключается в том, что из-за общих нагрузок это оказалось более тупиковым.

Замки никогда не эскалируются из строки в страницу. он всегда идет от строки или страницы до, по крайней мере, всего уровня раздела.

Вы должны выяснить, почему вы видите эскалацию блокировки в первую очередь (если вы действительно находитесь). В режиме чтения с фиксированным уровнем изоляции типичное поведение заключается в том, что выбранные запросы принимают блокировки строк и освобождают их, как только данные считываются.

Вы работаете на излишне ограничительных уровнях изоляции? Эти эскалации происходят с заявлениями о модификации данных, которые можно разбить на более мелкие партии?

+0

Приложение работает с READ COMMITTED, а allow_row_locks и allow_page_locks - все с 1 из sys.indexes, но блокировка выбора всегда «TABLE». Благодарю. –

+0

Итак, что заставляет вас поверить в то, что эскалация блокировки является проблемой ?. Это может быть, но это не очевидно из информации, которую вы предоставили до сих пор. Вы спросили: «Это поведение по умолчанию?» ответьте «да, это». Так что это проблема [xy] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Вы должны задать другой вопрос, который на самом деле запрашивает то, на что вам нужен ответ. –

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