Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
McCar
Member

Откуда: Саратов
Сообщений: 775
MS SQL 2008 R2.
Товарищи, не хватает скиллов датабазника, подскажите в какое место посмотреть, чтобы разобраться...
Ситуация.
Есть некая хранимка по обработке данных, запускается раз в сутки по ночам, выполняется примерно час, пишет данные в несколько таблиц. Никаких параллельных процедур с записью в эти же таблицы вроде бы не запускается.
В последнее время периодически "падает" с ошибкой типа
"Executing the query " exec ISP_BONUS_PREPARE_ALL;" failed with the following error: "Транзакция (идентификатор процесса 78) вызвала взаимоблокировку ресурсов блокировка с другим процессом и стала жертвой взаимоблокировки...."
Вопрос, - куда смотреть чтобы понять кто кого заблокировал?
Спасибо.
12 май 14, 11:54    [16003290]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
McCar
Товарищи, не хватает скиллов датабазника, подскажите в какое место посмотреть, чтобы разобраться...

Смотрят в граф взаимоблокировки
12 май 14, 11:58    [16003322]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
McCar
Member

Откуда: Саратов
Сообщений: 775
Glory
McCar
Товарищи, не хватает скиллов датабазника, подскажите в какое место посмотреть, чтобы разобраться...

Смотрят в граф взаимоблокировки

Если можно - ссылку на статью чтобы быстро "вникнуть в тему" (можно на английском)
".. смотрим в лог такой то на такое то событие, запускаем такую то хранимку.." и т.д..
12 май 14, 12:57    [16003766]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
McCar
Если можно - ссылку на статью чтобы быстро "вникнуть в тему" (можно на английском)

https://www.google.ee/search?q=граф взаимоблокировки&oq=граф взаимоблокировки&aqs=chrome..69i57&sourceid=chrome&es_sm=93&ie=UTF-8#q=граф взаимоблокировки mssql
12 май 14, 12:58    [16003784]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
McCar,

про дедлоки почитайте для начала. инфы море просто. после воспроизведите дедлок сами. подсказка - 2 квери нужно будет с поочередным выполнением команд. поймайте свой же дедлок тем же профайлером. подозреваю, после этого серьезных вопросов уже не останется
12 май 14, 12:58    [16003789]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
McCar
Member

Откуда: Саратов
Сообщений: 775
Crimean
McCar,
поймайте свой же дедлок тем же профайлером. подозреваю, после этого серьезных вопросов уже не останется

Он не воспроизводится, но периодически случается по ночам.
Можно вообще разобраться без того, чтобы воспроизводить, а по результатам из логов?
12 май 14, 14:11    [16004360]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
McCar,

сложно разбираться не понимая )
а поймать - профайлер пустите или xevents настройте - что вам ближе / проще / понятнее - результат один будет - граф в xml, от которого уже и будем работать
12 май 14, 14:13    [16004383]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
McCar
Member

Откуда: Саратов
Сообщений: 775
То есть такого что по умолчанию "у нас все ходы записаны" в MS SQL нет и понять "что это было" сейчас уже нельзя?
И чтобы получить подробную информацию о взаимоблокировках, нужно
а)курить, например, это -
Detecting and Ending Deadlocks
б)Настаивать логирование в профайлере на нужные события
?
12 май 14, 14:24    [16004470]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
McCar
То есть такого что по умолчанию "у нас все ходы записаны" в MS SQL нет

Если вы про полный аудит всех событий, то конечно по-умолчанию он не включен. Птому что это недешовое занятие - все логировать

McCar
И чтобы получить подробную информацию о взаимоблокировках, нужно

Да
12 май 14, 14:28    [16004489]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
McCar
Member

Откуда: Саратов
Сообщений: 775
Glory
McCar
То есть такого что по умолчанию "у нас все ходы записаны" в MS SQL нет

Если вы про полный аудит всех событий, то конечно по-умолчанию он не включен. Птому что это недешовое занятие - все логировать

McCar
И чтобы получить подробную информацию о взаимоблокировках, нужно

Да

Я рассчитвал, что если уж сервер по умолчанию логирует все запросы, и их можно посмотреть через
SELECT execquery.last_execution_time AS [Date Time], execsql.text AS [Script] FROM sys.dm_exec_query_stats AS execquery
CROSS APPLY sys.dm_exec_sql_text(execquery.sql_handle) AS execsql
, то и взаимоблокировки, как более редкое событие, он и подавно должен фиксировать.
:-)
Спасибо.
12 май 14, 14:42    [16004580]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
McCar
Я рассчитвал, что если уж сервер по умолчанию логирует все запросы,

По-умолчанию сервер не логирует запросы
То, что вы привели - это Dynamic Management Views, а не лог
И кроме того, текст запроса может вовсе не являться причиной взимоблокировки

McCar
то и взаимоблокировки, как более редкое событие, он и подавно должен фиксировать.

А что делать еще с сотнями ошибок, среди которых есть поважнее ошибки взаимоблокировки ?
12 май 14, 14:47    [16004614]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
McCar
Я рассчитвал, что если уж сервер по умолчанию логирует все запросы, и их можно посмотреть через
SELECT execquery.last_execution_time AS [Date Time], execsql.text AS [Script] FROM sys.dm_exec_query_stats AS execquery
CROSS APPLY sys.dm_exec_sql_text(execquery.sql_handle) AS execsql



это не логирование, это то, что сейчас выполняется...в данный момент....и "это" никуда не скидывается для дальнейшего логирования/анализа...если вы сами за ранее не позаботились
12 май 14, 14:48    [16004620]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
McCar
Member

Откуда: Саратов
Сообщений: 775
Knyazev Alexey
McCar
Я рассчитвал, что если уж сервер по умолчанию логирует все запросы, и их можно посмотреть через
SELECT execquery.last_execution_time AS [Date Time], execsql.text AS [Script] FROM sys.dm_exec_query_stats AS execquery
CROSS APPLY sys.dm_exec_sql_text(execquery.sql_handle) AS execsql



это не логирование, это то, что сейчас выполняется...в данный момент....и "это" никуда не скидывается для дальнейшего логирования/анализа...если вы сами за ранее не позаботились


Это не то, что выполняется "в данный момент".
Сейчас у себя запустил - показало 14 тыс запросов (завершившихся запросов) за период с 2014-05-12 09:32:31 по текущий момент.
12 май 14, 15:04    [16004757]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
McCar
Это не то, что выполняется "в данный момент".


ок, дословно:

автор
Представление одной строки для каждой инструкции плана в кэше и время жизни строк связано с самим планом. Когда план удаляется из кэша, соответствующие строки исключаются из представления.


http://msdn.microsoft.com/ru-ru/library/ms189741.aspx

и не более...это никакой не лог!!!
12 май 14, 15:07    [16004777]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
McCar
Member

Откуда: Саратов
Сообщений: 775
Вдогонку.
или это просто из кеша запросов берется?
12 май 14, 15:07    [16004782]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
McCar
Member

Откуда: Саратов
Сообщений: 775
Knyazev Alexey
McCar
Это не то, что выполняется "в данный момент".


http://msdn.microsoft.com/ru-ru/library/ms189741.aspx

и не более...это никакой не лог!!!

Все.. дошло.
:-)
Еще раз спасибо за устранение белых пятен в грамотности.
12 май 14, 15:10    [16004803]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
Denis Reznik
Member

Откуда: Киев
Сообщений: 156
McCar, если лень или нет возможности настраивать профайлер или EE, включите Trace Flag 1112, это включит логирование графа в Error Log. Читать его будет сложнее чем в профайлере, но представление о том что происходит получите сразу. Вот инструкция включения:
DBCC TRACEON(1222,-1)
12 май 14, 16:22    [16005276]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
McCar
Member

Откуда: Саратов
Сообщений: 775
Возвращая к теме. Помогите разобраться плиз.
Каждый день в одно время при процессинге групп мера измерения SSAS вылетает ошибка.
"Ошибки транзакции: Не удалось выполнить блокирование по причине взаимоблокировки".
Настроил профайлер, шаблон - TSQL_LOCKS.
Попробовал вызвать блокировку искусственно - отображает, показывает граф блокировки, все понятно и красиво.
Но блокировку "из реальной жизни" - не отображает никак, в trace в момент ошибки куча событий Lock:Escalation .. и все.
Куда еще смотреть?
21 июл 14, 11:48    [16334183]     Ответить | Цитировать Сообщить модератору
 Re: взаимоблокировка ресурсов блокировка с другим процессом - как разобраться ?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Триггеры поковыряйте. Как правило, необъяснимы блокировки гнездятся в плохом коде триггера.
21 июл 14, 12:46    [16334669]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить