powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
15 сообщений из 15, страница 1 из 1
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062311
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу выявить узкие места в БД.
Думаю собирать статистику по блокировкам и потом анализировать.
Какими инструментами это лучше сделать?
...
Рейтинг: 0 / 0
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062313
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix,

Ну, сначала на это можно глянуть

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
--запросы, страдающие от блокировки
SELECT TOP 10
       [Average Time Blocked] = (total_elapsed_time - total_worker_time) / qs.execution_count,
       [Total Time Blocked] = total_elapsed_time - total_worker_time,
       [Execution count] = qs.execution_count,
       [Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2, 
         (CASE
            WHEN qs.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 
            ELSE qs.statement_end_offset
          END - qs.statement_start_offset)/2),
       [Parent Query] = qt.text,
       [DatabaseName] = DB_NAME(qt.dbid)
  FROM sys.dm_exec_query_stats qs
  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
  ORDER BY [Average Time Blocked] DESC;
...
Рейтинг: 0 / 0
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062323
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик,
Спасибо.
За какой период эти данные собираются и хранятся?
Я подозреваю что это текущие данные.
Я бы хотел собирать постоянно
...
Рейтинг: 0 / 0
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062358
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix,

создайте джоб, пишите в таблицу.
...
Рейтинг: 0 / 0
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062363
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE EVENT SESSION [Deadlocks] ON SERVER
ADD EVENT sqlserver.xml_deadlock_report
ADD TARGET package0.event_file (SET filename = N'Deadlocks')
WITH (MAX_MEMORY = 4096 KB, EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS, MAX_DISPATCH_LATENCY = 30 SECONDS, MAX_EVENT_SIZE = 0 KB, MEMORY_PARTITION_MODE = NONE, TRACK_CAUSALITY = OFF, STARTUP_STATE = ON)
GO

ALTER EVENT SESSION [Deadlocks] ON SERVER
STATE = START;
GO



Сбор взаимоблокировок
...
Рейтинг: 0 / 0
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062381
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix
Хочу выявить узкие места в БД.
Думаю собирать статистику по блокировкам и потом анализировать.
Какими инструментами это лучше сделать?


Бесплодное занятие.
Блокировки были, есть и будут.
Ибо MS SQL - блокировочник.

Никакие "узкие места" вы не обнаружите.

Единственное средство "борьбы с блокировками" - писать быстрые запросы.
Ну еще RCSI для читателей есть...
...
Рейтинг: 0 / 0
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062384
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix
За какой период эти данные собираются и хранятся?
Я подозреваю что это текущие данные


с последнего перезапуска сервера
...
Рейтинг: 0 / 0
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062392
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Бесплодное занятие.
Блокировки были, есть и будут.
Ибо MS SQL - блокировочник.

Никакие "узкие места" вы не обнаружите.

Единственное средство "борьбы с блокировками" - писать быстрые запросы.
Ну еще RCSI для читателей есть...
ага

была у нас процедура обновления справочников из центра
работала 2 минуты
за этот время юзеры успевали отвалиться и сыпали на нас заявки

пришлось насовать внутрь коммитов и использовать времянки, чтобы блокировки были максимально короткими
пришел с Оракла... долго офигевал, потом привык
...
Рейтинг: 0 / 0
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062393
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
leonix
За какой период эти данные собираются и хранятся?
Я подозреваю что это текущие данные


с последнего перезапуска сервера


sys.dm_exec_query_stats"When a plan is removed from the cache, the corresponding rows are eliminated from this view."

так что, зависит от многих факторов
...
Рейтинг: 0 / 0
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062402
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad
Критик
пропущено...


с последнего перезапуска сервера


sys.dm_exec_query_stats"When a plan is removed from the cache, the corresponding rows are eliminated from this view."


так что, зависит от многих факторов
поэтому "создайте джоб, пишите в таблицу".
Но толку от этого будет немного, как выше сказано.
...
Рейтинг: 0 / 0
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062421
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен писать в таблицу
Нужна информация типа

Код: sql
1.
ВремяБлокировки | ЗапросВиновник | ЗапросЖертва



Как такой запрос вытянуть.
Ещё проблема.
Предположим блокировка 10 мин, а джоб каждые 2 минуты.
Как сделать так чтобы одна и таже иформация не записалась в таб несколько раз.
...
Рейтинг: 0 / 0
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062424
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix,

вторым шагом джоба чистить дубли в таблице
либо использовать merge
...
Рейтинг: 0 / 0
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062426
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad
leonix,

вторым шагом джоба чистить дубли в таблице
либо использовать merge

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

настройте на сервере допустимый уровень ожидания

Код: sql
1.
sp_configure 'blocked process threshold', 10




потом записывайте xEvent по событию
Код: sql
1.
2.
3.
create event session [locks] on server 
add event sqlserver.blocked_process_report
--blablabla действия, таргеты и.т.д



у уже потом анализируйте полученные данные
...
Рейтинг: 0 / 0
Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
    #40062666
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix,
Не изобретайте велосипед: https://aboutsqlserver.com/bmframework/
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как собрать статистику по виновникам блокировок (таблица и общее время блокировки)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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