Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
alister Member Откуда: Сообщений: 91 |
Есть искусственно сгенерированный приложением запрос, который сводится в "узком" месте к подзапросу select .... from [ActivityPointerBase] inner join [lv_notificationactivityBase] on ([ActivityPointerBase].[ActivityId] = [lv_notificationactivityBase].[ActivityId] and [ActivityPointerBase].[ActivityTypeCode] = 10042) .... ActivityPointerBase - таблица с 3 726 767 записями lv_notificationactivityBase - таблица с 50609 записями Скриншот графического плана приаттачен, идет Clustered index Scan по маленькой таблице lv_notificationactivityBase и Index Seek к ActivityPointerBase, который повторяется в количестве записей в lv_notificationactivityBase. Но профайлер по тому же процессу показывает события "Scan Start" "Scan Stop" по ObjectId = ActivityPointerBase в количестве 50609 Эти события после повторения какого то количества раз в конце концов переходят в событие Lock Escalation на всей таблице ActivityPointerBase. Непонятно, почему Index Seek на плане запроса превращается Scan в трейсе. Ну и основной вопрос, как предотвратить Lock Escalation. Как вариант, можно попробовать перевести базу с Isolation Level Read commited на READ_COMMITTED_SNAPSHO К сообщению приложен файл. Размер - 77Kb |
26 мар 15, 18:14 [17436749] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8730 |
у вас seek идет по неуникльному полю, что по своей сути есть ренж скан
alter table ... set (lock_escalation = disable) |
||||
26 мар 15, 18:23 [17436805] Ответить | Цитировать Сообщить модератору |
SomewhereSomehow Member Откуда: Moscow Сообщений: 2480 Блог |
alister, Ответ на ваш первый вопрос (про seek/scan): http://blogs.msdn.com/b/sqlserverfaq/archive/2010/09/14/scan-count-meaning-in-set-statistics-io-output.aspx http://blogs.msdn.com/b/sqlserverfaq/archive/2010/09/29/scan-count-meaning-in-set-statistics-io-output-part-2.aspx Там про statistics io, но причина та же. Ответ на ваш второй вопрос: https://technet.microsoft.com/en-us/library/ms184286(v=sql.105).aspx пункт: Reducing Locking and Escalation |
26 мар 15, 18:25 [17436821] Ответить | Цитировать Сообщить модератору |
alister Member Откуда: Сообщений: 91 |
ну, про это я думал, даже пробовал сделать, но из-за блокировок пока не прошло Вроде snapshot isilation тот же результат дает |
||||||
26 мар 15, 18:31 [17436844] Ответить | Цитировать Сообщить модератору |
alister Member Откуда: Сообщений: 91 |
Да, спасибо |
||
26 мар 15, 18:45 [17436919] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |