Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Добрый день! Microsoft SQL Server 2014 (SP2-CU10-GDR) (KB4052725) - 12.0.5571.0 (X64) Jan 10 2018 15:52:08 Copyright (c) Microsoft Corporation Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor) Второй раз уже наблюдаю ситуацию. Зависает сессия с ожиданием LCK_M_SCH_M. В сессии работает хранимая процедура, в которой неоднократно выполняется запуск другой хранимой процедуры, внутри которой создаются и используются локальные временные таблицы (if object_id ... is not null drop table ... create table ...). syslockinfo показывает (см. вложение) ожидание на одну из этих локальных временных таблиц. Не могу понять, что происходит. Что означает, что есть блокировка (granted) на эту таблицу с transaction_id = 5448341393, а с другим transaction_id = 5448332983 блокировка Waiting? В какую сторону смотреть, чтоб разобраться? Предыдущий раз разрешился только перезапуском службы. KILL сессии никаких результатов не дал - так и весел несколько часов с 0% выполнения, хотя по сессии не было какой-то огромной транзакции, которая кучу бы чего изменила. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 06:39 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Олегон, гугл говорит, что LCK_M_SCH_M ожидание на блокировку изменения схемы. Все блокировки это вопрос уровня изоляции. Начните с выяснения какой уровень изоляции у вас установлен для выполнения вашей исходной ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 07:33 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Дополню. В логах SQL-сервера в обоих случаях: * Unresolved deadlock Deadlock monitor failed to resolve one or more deadlocks. Server may require restart to recover from this condition. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 07:33 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
ОлегонДополню. В логах SQL-сервера в обоих случаях: * Unresolved deadlock Deadlock monitor failed to resolve one or more deadlocks. Server may require restart to recover from this condition. Ну это все, что вам нужно знать, собственно. Deadlock. Учитывая Олегонхранимая процедура, в которой неоднократно выполняется запуск другой хранимой процедуры, внутри которой создаются и используются локальные временные таблицы тут надо смотреть на алгоритм ваших ХП и фиксить логику, которая приводит к таким дедлокам. Это боевой сервер? Вы можете обратиться к разработчику вашей базы за помощью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 07:42 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Олегон, Ну на tempdb достаточно старая проблема, сколько файлов у базы? Тут больше про последнее, но уктально в общем для всех https://support.microsoft.com/az-latn-az/help/4131193/performance-issues-occur-in-form-of-pagelatch-ex-and-pagelatch-sh-wait https://blogs.msdn.microsoft.com/sql_server_team/tempdb-files-and-trace-flags-and-updates-oh-my/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 08:50 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
PizzaPizzaОлегон, гугл говорит, что LCK_M_SCH_M ожидание на блокировку изменения схемы. Все блокировки это вопрос уровня изоляции. Начните с выяснения какой уровень изоляции у вас установлен для выполнения вашей исходной ХП. да что вы говорите. и на каком же уровне изоляции SCH-M кого-то не остановит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 09:11 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
ОлегонЧто означает, что есть блокировка (granted) на эту таблицу с transaction_id = 5448341393, а с другим transaction_id = 5448332983 блокировка Waiting? 5448341393 читает, 5448332983 пытается изменить саму таблицу, например, колонку добавляет. разумеется, ждет, пока первая транзакция отпустит таблицу, нельзя же ее модифицировать, пока есть читатели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 09:17 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Yasha123PizzaPizzaОлегон, гугл говорит, что LCK_M_SCH_M ожидание на блокировку изменения схемы. Все блокировки это вопрос уровня изоляции. Начните с выяснения какой уровень изоляции у вас установлен для выполнения вашей исходной ХП. да что вы говорите. и на каком же уровне изоляции SCH-M кого-то не остановит? гугл ему это не сказал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 09:21 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Yasha123PizzaPizzaОлегон, гугл говорит, что LCK_M_SCH_M ожидание на блокировку изменения схемы. Все блокировки это вопрос уровня изоляции. Начните с выяснения какой уровень изоляции у вас установлен для выполнения вашей исходной ХП. да что вы говорите. и на каком же уровне изоляции SCH-M кого-то не остановит? Вопрос не в остановит-неостановит, а в понимании спрашивающим с чем он столкнулся. Если человек видит блокировку и, допустим, не знаком с изоляциями, то совет тут только один - обратиться к разработчику. Не будете же вы, в самом деле, советовать на боевом и неизвестном вам сервере что то делать с неизвестной вам логикой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 09:58 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
TaPaK Ну на tempdb достаточно старая проблема, сколько файлов у базы? Файлов 16. Ядер CPU: 32 Планируем увеличить, прибавив 4 файла, т.к. стали наблюдать PAGELATCH_UP при нагрузке. Yasha123 5448341393 читает, 5448332983 пытается изменить саму таблицу, например, колонку добавляет. разумеется, ждет, пока первая транзакция отпустит таблицу, нельзя же ее модифицировать, пока есть читатели Как это может происходить в одной и той же сессии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 09:59 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Олегон, авторПланируем увеличить, прибавив 4 файла, т.к. стали наблюдать PAGELATCH_UP при нагрузке. ну UP это не к IO относится. Так то общая рекомендация на CPU = количество файлов, но и если не ошибаюсь то были и о том что много тоже не очень хорошо. Посмотрите что в ожиданиях, если там что то типа sysobjvalues то тут точно файлами не решить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 10:06 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
ОлегонКак это может происходить в одной и той же сессии? я же не вижу ваш код. попробуйте пошариться в system_health, может, там есть инфо о дедлоке, хотя бы будет текст конфликтующих процессов. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. с другой стороны, раз дедлок не резолвился, может и графа никакого нет. --- в логе можно было посмотреть, что за транзакции (sys.fn_dblog()) теперь уже наверное лог перезатеря, а вот system_health может еще и нет. ну или выставьте TF 1222, пусть графы в еррорлог валятся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 10:26 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
PizzaPizzaYasha123пропущено... да что вы говорите. и на каком же уровне изоляции SCH-M кого-то не остановит? Вопрос не в остановит-неостановит, а в понимании спрашивающим с чем он столкнулся. Если человек видит блокировку и, допустим, не знаком с изоляциями, то совет тут только один - обратиться к разработчику. Не будете же вы, в самом деле, советовать на боевом и неизвестном вам сервере что то делать с неизвестной вам логикой. достали уже неучи лезть с ценными советами. еще раз, дарагуля, ответь на конкретный воппрос: какой же надо выставить уровень изоляции процедуре ТС, чтобы получить SCH-M на таблицу при имеющихся читателях таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 10:30 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Yasha123с другой стороны, раз дедлок не резолвился, может и графа никакого нет. Графа нет - вместо него сообщение об ошибке. Флаг включён. Процесс всё ещё висит (я так понимаю, в заблокированном глючном состоянии, раз его не смог сервер прибить). sys.fn_dblog() пока не даёт посмотреть - отваливается по тайм-ауту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 10:43 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Олегон, процесс ждёт чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 10:45 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Я в самом начале написал. Внутри одной и той же сессии взаимоблокировка. Резолв Deadlock'а не среботал - вывалился в ошибку (запись в журнале). Теперь сессия вот в таком состоянии (см. скриншот). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 10:52 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Yasha123, Ответ простой: уровень изоляции 42 надо поставить. И сразу вам вопрос: как можно откатить транзакцию используя партицирование? Правда это выглядит странно - задавать бессмысленный вопрос нерелевантный контексту? FYI " Unresolved deadlock" имеет не так много упоминаний и они все легко гуглятся. Пробуйте своими мощными экстрасенсорными способностями помочь ТС с такого уровня проблемами... Дорогуша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 10:57 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
PizzaPizzaYasha123, Ответ простой: уровень изоляции 42 надо поставить. И сразу вам вопрос: как можно откатить транзакцию используя партицирование? Правда это выглядит странно - задавать бессмысленный вопрос нерелевантный контексту? FYI " Unresolved deadlock" имеет не так много упоминаний и они все легко гуглятся. Пробуйте своими мощными экстрасенсорными способностями помочь ТС с такого уровня проблемами... Дорогуша. я так понимаю, это вещает клон Andy или его ближайший соратник по партии? какого же тогда хрена doppia Pizza спрашивала "Начните с выяснения какой уровень изоляции у вас установлен для выполнения вашей исходной ХП." ведь это и есть это самое: "Правда это выглядит странно - задавать бессмысленный вопрос нерелевантный контексту ?" не форум, натуральное болото ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 11:20 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Олегон, в общем я по прежнему склонен думать что это таже проблема что и описанная в ссылкае, в вашем случае как раз слудющий CU её и правит https://support.microsoft.com/en-us/help/4090320/significantly-increased-pagelatch-ex-contentions-in-sys-sysobjvalues. А так, судя по всему рестарт как все спать уйдут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 11:22 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
PizzaPizzaYasha123, Ответ простой: уровень изоляции 42 надо поставить. И сразу вам вопрос: как можно откатить транзакцию используя партицирование? Правда это выглядит странно - задавать бессмысленный вопрос нерелевантный контексту? FYI " Unresolved deadlock" имеет не так много упоминаний и они все легко гуглятся. Пробуйте своими мощными экстрасенсорными способностями помочь ТС с такого уровня проблемами... Дорогуша. Козловсике вернулись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 11:22 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Олегон, пробуйте sys.fn_dblog() с nolock, и не весь, с фильтром по ид транзакции. в одной сессии наверное может быть, если вторая транзакция системная. не могу придумать, зачем может понадобиться sch-m. наверное, чтобы дроп сделать. вы зачем внутри процедуры дропаете то, что само должно умереть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 11:30 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
TaPaKОлегон, в общем я по прежнему склонен думать что это таже проблема что и описанная в ссылкае, в вашем случае как раз слудющий CU её и правит https://support.microsoft.com/en-us/help/4090320/significantly-increased-pagelatch-ex-contentions-in-sys-sysobjvalues. А так, судя по всему рестарт как все спать уйдут Ясно. Спасибо за мысль. В планах на этот месяц была установка CU13. Рестартанём, конечно. В предыдущий случай так и сделали. Не хочется таким образом решать, т.к. не понятна причина появления такой ситуации, т.к. изменений в конфигурации или в коде не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 11:31 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
TaPaKКозловсике вернулись? бесит то, что в кои-то веки что-то интересное нарисовалось, и то в топике сразу же срет чей-то клон. чего потом удивляться, что сюда людям заглядывать неохота ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 11:32 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
Yasha123Олегон, не могу придумать, зачем может понадобиться sch-m. наверное, чтобы дроп сделать. вы зачем внутри процедуры дропаете то, что само должно умереть? Привычка, наверное... При разработке, отладки удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 11:42 |
|
||
|
Ожидание блокировки локальной временной таблицы
|
|||
|---|---|---|---|
|
#18+
ОлегонYasha123Олегон, не могу придумать, зачем может понадобиться sch-m. наверное, чтобы дроп сделать. вы зачем внутри процедуры дропаете то, что само должно умереть? Привычка, наверное... При разработке, отладки удобно. ну для понимания, ремоендация ms по этому авторDo not explicitly drop temp tables at the end of a stored procedure, they will get cleaned up when the session that created them ends. Do not alter temp tables after they have been created. Do not truncate temp tables Move index creation statements on temp tables to the new inline index creation syntax that was introduced in SQL Server 2014. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 11:46 |
|
||
|
|

start [/forum/search_topic.php?author=LtColombo&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
get settings: |
9ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 566ms |
| total: | 797ms |

| 0 / 0 |
