Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как собрать статистику блокировок, которые накладываем сессия? / 6 сообщений из 6, страница 1 из 1
11.08.2021, 14:13
    #40090067
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как собрать статистику блокировок, которые накладываем сессия?
Всем привет. Есть задача собрать статистику какие объекты блокируются во время выполнения ночного расчета.

Есть джоб, которые состоит из 50 шагов, выполняется исключительно в ночное время, возможно ли собрать статистику в разрезе шага, о том, какие типы блокировок и на какие объекты вызывала сессия во время своей работы?

Например, в начале шага я получаю SPID сессии, возможно ли используя T-SQL запустить трассировку этой сессии с сохранением результата Session Locks?
...
Рейтинг: 0 / 0
11.08.2021, 14:31
    #40090072
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как собрать статистику блокировок, которые накладываем сессия?
teCa,

Собственно чуть уточню.

Сейчас задумка такая.

Вначале шага я получаю SPID и передаю его в сервис брокер, который с момента старта мерджит данные из sys.dm_tran_locks, в конце шага я отключаю СБ. По идее, я получу все объекты с типами блокировок на них и временем. Нужно лишь придумать обработку, которая завершит работу внутри СБ если случится ошибка внутри шага.

Но может я изобретаю велосипед и можно это сделать другими средствами предусмотренными в MS SQL?
...
Рейтинг: 0 / 0
11.08.2021, 14:53
    #40090075
spenov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как собрать статистику блокировок, которые накладываем сессия?
Посмотрите Extended Events. Там можно много чего собирать, отбирая данные по учетке, базе данных...Запускаете задачу под отдельной учеткой и можно собирать данные.
...
Рейтинг: 0 / 0
11.08.2021, 21:48
    #40090170
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как собрать статистику блокировок, которые накладываем сессия?
teCa,

создавайте программно xEvent сессию на событие lock_accuqired с фильтром на ваш SPID, после обрабатывайте полученные данные и удаляйте сессию.

решение с постоянным мониторингом sys.dm_tran_locks может пропустить события блокировки ресурсов, особенно если сервер нагруженный выборка из этого dmv может быть долгой.
...
Рейтинг: 0 / 0
16.08.2021, 12:19
    #40090984
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как собрать статистику блокировок, которые накладываем сессия?
felix_ff
teCa,

создавайте программно xEvent сессию на событие lock_accuqired с фильтром на ваш SPID, после обрабатывайте полученные данные и удаляйте сессию.

решение с постоянным мониторингом sys.dm_tran_locks может пропустить события блокировки ресурсов, особенно если сервер нагруженный выборка из этого dmv может быть долгой.


Пошел вашим путем, сделал 2 хранимки, первая создает трассировку с фильтром по SPID, вторая хранимка завершает трассировку:

авторexec [dbo].[CREATE_xEVENT_SESSION_by_SPID] 338,'test'
waitfor delay '00:00:10'
exec [dbo].[STOP_xEVENT_SESSION_by_NAME] 'test'

В итоге получаю трассировку с 10000 записей, как мне теперь прочитать эти данные и можно ли читать их в табличном виде?
...
Рейтинг: 0 / 0
17.08.2021, 00:53
    #40091125
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как собрать статистику блокировок, которые накладываем сессия?
teCa,

ну вы цель то для x-сессии указали?

если файл то https://docs.microsoft.com/ru-ru/sql/relational-databases/system-functions/sys-fn-xe-file-target-read-file-transact-sql?view=sql-server-ver15

если ring_buffer то sys.dm_xe_session_targets + xml-methods
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как собрать статистику блокировок, которые накладываем сессия? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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