powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ожидание блокировки локальной временной таблицы
25 сообщений из 81, страница 1 из 4
Ожидание блокировки локальной временной таблицы
    #39710722
Олегон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

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% выполнения, хотя по сессии не было какой-то огромной транзакции, которая кучу бы чего изменила.
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710726
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олегон,

гугл говорит, что LCK_M_SCH_M ожидание на блокировку изменения схемы. Все блокировки это вопрос уровня изоляции. Начните с выяснения какой уровень изоляции у вас установлен для выполнения вашей исходной ХП.
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710727
Олегон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дополню. В логах SQL-сервера в обоих случаях:

* Unresolved deadlock
Deadlock monitor failed to resolve one or more deadlocks.
Server may require restart to recover from this condition.
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710729
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОлегонДополню. В логах SQL-сервера в обоих случаях:

* Unresolved deadlock
Deadlock monitor failed to resolve one or more deadlocks.
Server may require restart to recover from this condition.

Ну это все, что вам нужно знать, собственно. Deadlock.

Учитывая
Олегонхранимая процедура, в которой неоднократно выполняется запуск другой хранимой процедуры, внутри которой создаются и используются локальные временные таблицы
тут надо смотреть на алгоритм ваших ХП и фиксить логику, которая приводит к таким дедлокам.
Это боевой сервер? Вы можете обратиться к разработчику вашей базы за помощью?
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710738
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олегон,

Ну на 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/
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710746
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizzaОлегон,

гугл говорит, что LCK_M_SCH_M ожидание на блокировку изменения схемы. Все блокировки это вопрос уровня изоляции. Начните с выяснения какой уровень изоляции у вас установлен для выполнения вашей исходной ХП.
да что вы говорите.
и на каком же уровне изоляции SCH-M кого-то не остановит?
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710749
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОлегонЧто означает, что есть блокировка (granted) на эту таблицу с transaction_id = 5448341393, а с другим transaction_id = 5448332983 блокировка Waiting?

5448341393 читает, 5448332983 пытается изменить саму таблицу, например, колонку добавляет.
разумеется, ждет, пока первая транзакция отпустит таблицу, нельзя же ее модифицировать,
пока есть читатели
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710753
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123PizzaPizzaОлегон,

гугл говорит, что LCK_M_SCH_M ожидание на блокировку изменения схемы. Все блокировки это вопрос уровня изоляции. Начните с выяснения какой уровень изоляции у вас установлен для выполнения вашей исходной ХП.
да что вы говорите.
и на каком же уровне изоляции SCH-M кого-то не остановит?
гугл ему это не сказал :)
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710776
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123PizzaPizzaОлегон,

гугл говорит, что LCK_M_SCH_M ожидание на блокировку изменения схемы. Все блокировки это вопрос уровня изоляции. Начните с выяснения какой уровень изоляции у вас установлен для выполнения вашей исходной ХП.
да что вы говорите.
и на каком же уровне изоляции SCH-M кого-то не остановит?

Вопрос не в остановит-неостановит, а в понимании спрашивающим с чем он столкнулся. Если человек видит блокировку и, допустим, не знаком с изоляциями, то совет тут только один - обратиться к разработчику.
Не будете же вы, в самом деле, советовать на боевом и неизвестном вам сервере что то делать с неизвестной вам логикой.
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710777
Олегон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK Ну на tempdb достаточно старая проблема, сколько файлов у базы?
Файлов 16. Ядер CPU: 32
Планируем увеличить, прибавив 4 файла, т.к. стали наблюдать PAGELATCH_UP при нагрузке.

Yasha123 5448341393 читает, 5448332983 пытается изменить саму таблицу, например, колонку добавляет.
разумеется, ждет, пока первая транзакция отпустит таблицу, нельзя же ее модифицировать,
пока есть читатели

Как это может происходить в одной и той же сессии?
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710780
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олегон,

авторПланируем увеличить, прибавив 4 файла, т.к. стали наблюдать PAGELATCH_UP при нагрузке.
ну UP это не к IO относится. Так то общая рекомендация на CPU = количество файлов, но и если не ошибаюсь то были и о том что много тоже не очень хорошо. Посмотрите что в ожиданиях, если там что то типа sysobjvalues то тут точно файлами не решить
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710789
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОлегонКак это может происходить в одной и той же сессии?
я же не вижу ваш код.
попробуйте пошариться в system_health,
может, там есть инфо о дедлоке,
хотя бы будет текст конфликтующих процессов.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
WITH SystemHealth
AS 
(
SELECT CAST(target_data as xml) AS TargetData
FROM sys.dm_xe_session_targets st
       JOIN sys.dm_xe_sessions s ON s.address = st.event_session_address
WHERE name = 'system_health'
AND st.target_name = 'ring_buffer'
)
 
SELECT XEventData.XEvent.query('(data/value/deadlock)[1]') AS DeadLockGraph
FROM SystemHealth
       CROSS APPLY TargetData.nodes('//RingBufferTarget/event') AS XEventData (XEvent)
WHERE XEventData.XEvent.value('@name','varchar(4000)') = 'xml_deadlock_report';


с другой стороны, раз дедлок не резолвился,
может и графа никакого нет.
---
в логе можно было посмотреть, что за транзакции
(sys.fn_dblog())
теперь уже наверное лог перезатеря,
а вот system_health может еще и нет.
ну или выставьте TF 1222, пусть графы в еррорлог валятся
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710790
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizzaYasha123пропущено...

да что вы говорите.
и на каком же уровне изоляции SCH-M кого-то не остановит?

Вопрос не в остановит-неостановит, а в понимании спрашивающим с чем он столкнулся. Если человек видит блокировку и, допустим, не знаком с изоляциями, то совет тут только один - обратиться к разработчику.
Не будете же вы, в самом деле, советовать на боевом и неизвестном вам сервере что то делать с неизвестной вам логикой.
достали уже неучи лезть с ценными советами.
еще раз, дарагуля, ответь на конкретный воппрос:
какой же надо выставить уровень изоляции процедуре ТС,
чтобы получить SCH-M на таблицу при имеющихся читателях таблицы?
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710796
Олегон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123с другой стороны, раз дедлок не резолвился,
может и графа никакого нет.

Графа нет - вместо него сообщение об ошибке. Флаг включён.
Процесс всё ещё висит (я так понимаю, в заблокированном глючном состоянии, раз его не смог сервер прибить).
sys.fn_dblog() пока не даёт посмотреть - отваливается по тайм-ауту.
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710797
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олегон,

процесс ждёт чего?
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710799
Олегон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я в самом начале написал. Внутри одной и той же сессии взаимоблокировка. Резолв Deadlock'а не среботал - вывалился в ошибку (запись в журнале).
Теперь сессия вот в таком состоянии (см. скриншот).
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710800
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123,

Ответ простой: уровень изоляции 42 надо поставить.
И сразу вам вопрос: как можно откатить транзакцию используя партицирование?
Правда это выглядит странно - задавать бессмысленный вопрос нерелевантный контексту?

FYI " Unresolved deadlock" имеет не так много упоминаний и они все легко гуглятся. Пробуйте своими мощными экстрасенсорными способностями помочь ТС с такого уровня проблемами... Дорогуша.
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710815
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizzaYasha123,

Ответ простой: уровень изоляции 42 надо поставить.
И сразу вам вопрос: как можно откатить транзакцию используя партицирование?
Правда это выглядит странно - задавать бессмысленный вопрос нерелевантный контексту?

FYI " Unresolved deadlock" имеет не так много упоминаний и они все легко гуглятся. Пробуйте своими мощными экстрасенсорными способностями помочь ТС с такого уровня проблемами... Дорогуша.
я так понимаю, это вещает клон Andy или его ближайший соратник по партии?
какого же тогда хрена doppia Pizza спрашивала
"Начните с выяснения какой уровень изоляции у вас установлен для выполнения вашей исходной ХП."
ведь это и есть это самое:
"Правда это выглядит странно - задавать бессмысленный вопрос нерелевантный контексту ?"
не форум, натуральное болото
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710817
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олегон,

в общем я по прежнему склонен думать что это таже проблема что и описанная в ссылкае, в вашем случае как раз слудющий CU её и правит
https://support.microsoft.com/en-us/help/4090320/significantly-increased-pagelatch-ex-contentions-in-sys-sysobjvalues.

А так, судя по всему рестарт как все спать уйдут
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710818
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizzaYasha123,

Ответ простой: уровень изоляции 42 надо поставить.
И сразу вам вопрос: как можно откатить транзакцию используя партицирование?
Правда это выглядит странно - задавать бессмысленный вопрос нерелевантный контексту?

FYI " Unresolved deadlock" имеет не так много упоминаний и они все легко гуглятся. Пробуйте своими мощными экстрасенсорными способностями помочь ТС с такого уровня проблемами... Дорогуша.
Козловсике вернулись?
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710824
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олегон,

пробуйте sys.fn_dblog() с nolock,
и не весь, с фильтром по ид транзакции.

в одной сессии наверное может быть,
если вторая транзакция системная.

не могу придумать, зачем может понадобиться sch-m.
наверное, чтобы дроп сделать.
вы зачем внутри процедуры дропаете то, что само должно умереть?
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710825
Олегон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKОлегон,

в общем я по прежнему склонен думать что это таже проблема что и описанная в ссылкае, в вашем случае как раз слудющий CU её и правит
https://support.microsoft.com/en-us/help/4090320/significantly-increased-pagelatch-ex-contentions-in-sys-sysobjvalues.

А так, судя по всему рестарт как все спать уйдут

Ясно. Спасибо за мысль. В планах на этот месяц была установка CU13.
Рестартанём, конечно. В предыдущий случай так и сделали. Не хочется таким образом решать, т.к. не понятна причина появления такой ситуации, т.к. изменений в конфигурации или в коде не было.
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710826
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKКозловсике вернулись?

бесит то, что в кои-то веки что-то интересное нарисовалось,
и то в топике сразу же срет чей-то клон.
чего потом удивляться, что сюда людям заглядывать неохота
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710834
Олегон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123Олегон,
не могу придумать, зачем может понадобиться sch-m.
наверное, чтобы дроп сделать.
вы зачем внутри процедуры дропаете то, что само должно умереть?

Привычка, наверное... При разработке, отладки удобно.
...
Рейтинг: 0 / 0
Ожидание блокировки локальной временной таблицы
    #39710837
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олегон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.
...
Рейтинг: 0 / 0
25 сообщений из 81, страница 1 из 4
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ожидание блокировки локальной временной таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]