|
Как собрать статистику блокировок, которые накладываем сессия?
|
|||
---|---|---|---|
#18+
Всем привет. Есть задача собрать статистику какие объекты блокируются во время выполнения ночного расчета. Есть джоб, которые состоит из 50 шагов, выполняется исключительно в ночное время, возможно ли собрать статистику в разрезе шага, о том, какие типы блокировок и на какие объекты вызывала сессия во время своей работы? Например, в начале шага я получаю SPID сессии, возможно ли используя T-SQL запустить трассировку этой сессии с сохранением результата Session Locks? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2021, 14:13 |
|
Как собрать статистику блокировок, которые накладываем сессия?
|
|||
---|---|---|---|
#18+
teCa, Собственно чуть уточню. Сейчас задумка такая. Вначале шага я получаю SPID и передаю его в сервис брокер, который с момента старта мерджит данные из sys.dm_tran_locks, в конце шага я отключаю СБ. По идее, я получу все объекты с типами блокировок на них и временем. Нужно лишь придумать обработку, которая завершит работу внутри СБ если случится ошибка внутри шага. Но может я изобретаю велосипед и можно это сделать другими средствами предусмотренными в MS SQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2021, 14:31 |
|
Как собрать статистику блокировок, которые накладываем сессия?
|
|||
---|---|---|---|
#18+
Посмотрите Extended Events. Там можно много чего собирать, отбирая данные по учетке, базе данных...Запускаете задачу под отдельной учеткой и можно собирать данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2021, 14:53 |
|
Как собрать статистику блокировок, которые накладываем сессия?
|
|||
---|---|---|---|
#18+
teCa, создавайте программно xEvent сессию на событие lock_accuqired с фильтром на ваш SPID, после обрабатывайте полученные данные и удаляйте сессию. решение с постоянным мониторингом sys.dm_tran_locks может пропустить события блокировки ресурсов, особенно если сервер нагруженный выборка из этого dmv может быть долгой. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2021, 21:48 |
|
Как собрать статистику блокировок, которые накладываем сессия?
|
|||
---|---|---|---|
#18+
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 записей, как мне теперь прочитать эти данные и можно ли читать их в табличном виде? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 12:19 |
|
Как собрать статистику блокировок, которые накладываем сессия?
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2021, 00:53 |
|
|
start [/forum/topic.php?fid=46&msg=40090075&tid=1684406]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 265ms |
total: | 394ms |
0 / 0 |