Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли узнать как долго уже наложена блокировка на ресурс / 10 сообщений из 10, страница 1 из 1
13.01.2021, 12:20
    #40035349
leonix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать как долго уже наложена блокировка на ресурс
Есть запрос который выдает блокировки.

SELECT * FROM sys.dm_tran_locks

Можно ли как то узнать как долго уже существует блокировка. Чтобы мониторить зависшие и предпринимать меры какиенибудь.
...
Рейтинг: 0 / 0
13.01.2021, 12:53
    #40035365
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать как долго уже наложена блокировка на ресурс
sys.dm_os_waiting_tasks
...
Рейтинг: 0 / 0
13.01.2021, 12:53
    #40035367
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать как долго уже наложена блокировка на ресурс
leonix,

блокировка существует в определенном контексте, смотрите на поле request_owner_type если оно TRANSACTION
то request_owner_id это transaction_id
далее лезете в sys.dm_tran_database_transactions и находите время начала транзакции.

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

хотите более точно отслеживать время наложения: создавайте XE сессию с мониторингом событий наложения блокировок.

блокировки априори не бывают "зависшыми".
если сессия не может по какой то причине получить блокировку на ресурс request_status будет к примеру WAIT
то вы можете посмотреть чего именно ждет сессия в sys.dm_os_waiting_tasks
...
Рейтинг: 0 / 0
13.01.2021, 13:00
    #40035372
leonix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать как долго уже наложена блокировка на ресурс
Гавриленко Сергей Алексеевич
sys.dm_os_waiting_tasks


Посмотрел. Не понял. Это ожидания вроде. Мою блокировку может никто не ждать или подождали и откатились.
...
Рейтинг: 0 / 0
13.01.2021, 13:19
    #40035381
leonix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать как долго уже наложена блокировка на ресурс
felix_ff
leonix,

блокировка существует в определенном контексте, смотрите на поле request_owner_type если оно TRANSACTION
то request_owner_id это transaction_id
далее лезете в sys.dm_tran_database_transactions и находите время начала транзакции.


спасибо, вроде то что надо

авторблокировки априори не бывают "зависшыми".

Если клиент начал транзакцию, заблокировал кучу ресурсов и завис. Блокировка типа зависшая будет.
...
Рейтинг: 0 / 0
13.01.2021, 14:15
    #40035420
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать как долго уже наложена блокировка на ресурс
leonix,

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

машина или выполняет работу или простаивает. (есть частные случаи исключительных ситуаций связанных с потенциальными сбоями, которые разработчики не удосужились учесть)

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

чисто имхо.
...
Рейтинг: 0 / 0
13.01.2021, 14:35
    #40035429
leonix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать как долго уже наложена блокировка на ресурс
felix_ff
leonix,

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

чисто имхо.


Абсолютно согласен. Чем я и занимаюсь. У меня 1000 пользователей. Пытаюсь понять какие сессии держат долгие блокировки и почему.
...
Рейтинг: 0 / 0
13.01.2021, 14:46
    #40035436
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать как долго уже наложена блокировка на ресурс
leonix
Чтобы мониторить зависшие и предпринимать меры какиенибудь.


DBCC OPENTRAN также может помочь

https://docs.microsoft.com/ru-ru/sql/t-sql/database-console-commands/dbcc-opentran-transact-sql?view=sql-server-ver15
...
Рейтинг: 0 / 0
13.01.2021, 14:47
    #40035439
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать как долго уже наложена блокировка на ресурс
leonix,

DBCC OPENTRAN, права потребуются.
...
Рейтинг: 0 / 0
13.01.2021, 14:55
    #40035446
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать как долго уже наложена блокировка на ресурс
leonix
Пытаюсь понять какие сессии держат долгие блокировки и почему.
Для этого нужно учитывать не только наличие блокировок, но и состояние сессии. Если грубо, то
running - запрос просто долго выполняется
suspended - запрос ожидает высвобождения какого-то ресурса
awaiting command - запустивший транзакцию ушел курить/обедать/домой/ в отпуск не завершив ее
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли узнать как долго уже наложена блокировка на ресурс / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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