powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как собрать статистику блокировок, которые накладываем сессия?
6 сообщений из 6, страница 1 из 1
Как собрать статистику блокировок, которые накладываем сессия?
    #40090067
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. Есть задача собрать статистику какие объекты блокируются во время выполнения ночного расчета.

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

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

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

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

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

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

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

решение с постоянным мониторингом sys.dm_tran_locks может пропустить события блокировки ресурсов, особенно если сервер нагруженный выборка из этого dmv может быть долгой.
...
Рейтинг: 0 / 0
Как собрать статистику блокировок, которые накладываем сессия?
    #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
Как собрать статистику блокировок, которые накладываем сессия?
    #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
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как собрать статистику блокировок, которые накладываем сессия?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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