Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ожидание блокировки локальной временной таблицы / 25 сообщений из 81, страница 1 из 4
01.10.2018, 06:39
    #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
01.10.2018, 07:33
    #39710726
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание блокировки локальной временной таблицы
Олегон,

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

* Unresolved deadlock
Deadlock monitor failed to resolve one or more deadlocks.
Server may require restart to recover from this condition.
...
Рейтинг: 0 / 0
01.10.2018, 07:42
    #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
01.10.2018, 08:50
    #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
01.10.2018, 09:11
    #39710746
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание блокировки локальной временной таблицы
PizzaPizzaОлегон,

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

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

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

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

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

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

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

авторПланируем увеличить, прибавив 4 файла, т.к. стали наблюдать PAGELATCH_UP при нагрузке.
ну UP это не к IO относится. Так то общая рекомендация на CPU = количество файлов, но и если не ошибаюсь то были и о том что много тоже не очень хорошо. Посмотрите что в ожиданиях, если там что то типа sysobjvalues то тут точно файлами не решить
...
Рейтинг: 0 / 0
01.10.2018, 10:26
    #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
01.10.2018, 10:30
    #39710790
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание блокировки локальной временной таблицы
PizzaPizzaYasha123пропущено...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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