powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Залогировать время выполненя запроса
25 сообщений из 54, страница 2 из 3
Залогировать время выполненя запроса
    #39911452
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

объем записанной профайлером трассировки не связан с размером заполнения tempdb. Поставьте фильтры, уберите лишние колонки, будет не так много записано.
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39911491
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Максим Александровитч,

объем записанной профайлером трассировки не связан с размером заполнения tempdb. Поставьте фильтры, уберите лишние колонки, будет не так много записано.
+ 1 Выдуманная проблема, уж если дефаултный трейс серьёзно не мешает, то этот вообще будет незаметен. Фильтр на пользователя, + дюрейшен по определению не может нагрузить, именно из за фильтра по дюрейшену.
Максим Александровитч
Владислав Колосова какой объем запросов создает _один_ пользователь? Или Вы просто спекулируете не проведя эксперимент?

Эти запросы отсасывают темдб...за час где-то 120 ГБ..Вопрос Владислава Колосова был про объём запросов. Запросы с текстом размера 120 Гб пользователь явно не посылает.
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39911552
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
+ 1 Выдуманная проблема, уж если дефаултный трейс серьёзно не мешает, то этот вообще будет незаметен. Фильтр на пользователя, + дюрейшен по определению не может нагрузить, именно из за фильтра по дюрейшену.
В отличие от Extended Events, фильтры в SQL Trace ограничивают то, что уходит в результат, а не генерацию событий.
Для фильтрации по duration нужно включать SQL:StmtCompleted. И генерироваться это событие будет для всех выполняемых запросов и только потом уже отфильтровываться.
Насколько это повлияет на производительность можете оценить самостоятельно.
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39911572
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
alexeyvg
+ 1 Выдуманная проблема, уж если дефаултный трейс серьёзно не мешает, то этот вообще будет незаметен. Фильтр на пользователя, + дюрейшен по определению не может нагрузить, именно из за фильтра по дюрейшену.
В отличие от Extended Events, фильтры в SQL Trace ограничивают то, что уходит в результат, а не генерацию событий.
Для фильтрации по duration нужно включать SQL:StmtCompleted. И генерироваться это событие будет для всех выполняемых запросов и только потом уже отфильтровываться.
Насколько это повлияет на производительность можете оценить самостоятельно.
Так внутри обработка делается быстро, разве нет?
И, концептуально, события в профайлере, и Extended Events, одинаковы, просто совершенно разная реализация.

События ведь в любом случае генерятся все существующие (как иначе, ведь не загружается же новый код database engine при запуске профайлера?), но при установке трассы сначала добавляется обработчик, притом явно на верхнем уровне цепочки, а дальше в обработке идёт проверка фильтров.

То есть, теоретически, заметно влиять не должно, то есть, можно сделать, что бы не влияло. А вот как сделано на самом деле, интересно было бы узнать. Или хотя бы потестить.
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39911574
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч
Добрый день.
Подскажите,кто сможет.
Нужно отследить действия пользователя А в БД.
Он может делать все инструкции,но в идеале нужно отслеживать слишком долгое выполнение его запросов.
Подскажите,как это лучше сделать средствами MSSQL


Вы тут углубились в дебри профилирования, а на самом деле у ТС есть безнес задача, которая должна быть реализованы на уровне бизнес логики.

Все запросы пользователей должны быть обернуты в процедуры и во всех процедурах надо следит за временем. Логировать время кодом процедур. Отправлять нотификацию из кода процедуры.
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39911581
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin
Максим Александровитч
Добрый день.
Подскажите,кто сможет.
Нужно отследить действия пользователя А в БД.
Он может делать все инструкции,но в идеале нужно отслеживать слишком долгое выполнение его запросов.
Подскажите,как это лучше сделать средствами MSSQL


Вы тут углубились в дебри профилирования, а на самом деле у ТС есть безнес задача, которая должна быть реализованы на уровне бизнес логики.

Все запросы пользователей должны быть обернуты в процедуры и во всех процедурах надо следит за временем. Логировать время кодом процедур. Отправлять нотификацию из кода процедуры.

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

ТСу хочется средствами MSSQL. Это Extended Events, либо Trace.
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39911585
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч
Mr. X
Максим Александровитч,

Тогда сами раз в мин, например, собирайте ифу запросом.


Да,по сути к этому же я пришел..По другому,походу никак..
Может кто-ть в курсе,есть ли какое-ть сторонее ПО для этих целей?

А в каком виде вы хотите собирать данные? Как с этим работать?

ПО для мониторинга полно на рынке. Мы к примеру используем NewRelic и Raygun.
Но прежде чем что-то советовать, хотелось бы какие-то требования увидеть.
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39911673
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
a_voronin
пропущено...


Вы тут углубились в дебри профилирования, а на самом деле у ТС есть безнес задача, которая должна быть реализованы на уровне бизнес логики.

Все запросы пользователей должны быть обернуты в процедуры и во всех процедурах надо следит за временем. Логировать время кодом процедур. Отправлять нотификацию из кода процедуры.

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

ТСу хочется средствами MSSQL. Это Extended Events, либо Trace.


А по-моему вот это бизнес логика по распределению ресурсов.

"Т.е.,суть такова,что я ставлю на мониторинг активность этого пользователя,если его запросы превышают определенный порог в мс(ну или любой другой),то логируется или отправляется уведомление."
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39911750
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin
Дмитрий Мух
пропущено...

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

ТСу хочется средствами MSSQL. Это Extended Events, либо Trace.


А по-моему вот это бизнес логика по распределению ресурсов.

"Т.е.,суть такова,что я ставлю на мониторинг активность этого пользователя,если его запросы превышают определенный порог в мс(ну или любой другой),то логируется или отправляется уведомление."
Простите, но какой бизнес по вашему строится на такой логике?
Что за предметная область?

По мне так простейший алерт в системе мониторинга. Обычно мышкой накликивается.
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39911838
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
a_voronin
пропущено...


А по-моему вот это бизнес логика по распределению ресурсов.

"Т.е.,суть такова,что я ставлю на мониторинг активность этого пользователя,если его запросы превышают определенный порог в мс(ну или любой другой),то логируется или отправляется уведомление."
Простите, но какой бизнес по вашему строится на такой логике?
Что за предметная область?

По мне так простейший алерт в системе мониторинга. Обычно мышкой накликивается.


Бизнес-логика состоит в разделении ресурсов, в отправке сообщения, в выделении пользователю квоты. Это конечно не логика проведения платежа или приема товара на склад, но это все же нечто, что взаимодействует с юзером, оказывает на него влияние.

Это явно не тот мониторинг, который делается для оптимизации производительности.
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39911887
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На обработку событий все время тратится время - с профилировщиком или без, другой вопрос - сколько "хуков" мы подвесим на эти события и какой IO у нас при этом возникнет в связи с частотой событий. IO на том же сарвере будет, конечно же, вредоносным. Из-за чего у начинающих сыщиков падают сервера. В любом случае, лучшие практики использования профайлера уже описаны в открытых источниках.
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39911992
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спс..
Буду юзать профайлер..
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39911995
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С другой стороны есть Заббикс.
но,опять же,опрос-то производится с помощью скуля.
Заббикс лишь регулирует периодичность..
Надо подумать
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39912025
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin
Максим Александровитч
Добрый день.
Подскажите,кто сможет.
Нужно отследить действия пользователя А в БД.
Он может делать все инструкции,но в идеале нужно отслеживать слишком долгое выполнение его запросов.
Подскажите,как это лучше сделать средствами MSSQL


Вы тут углубились в дебри профилирования, а на самом деле у ТС есть безнес задача, которая должна быть реализованы на уровне бизнес логики.

Все запросы пользователей должны быть обернуты в процедуры и во всех процедурах надо следит за временем. Логировать время кодом процедур. Отправлять нотификацию из кода процедуры.


Это практически невозможно...я говорил почему
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39912099
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После запуска трассировки с нексолькоми фильтрами и записью в таблицу сервер умер
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39912100
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Максим Александровитч,

https://docs.microsoft.com/ru-ru/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-procedure-stats-transact-sql?view=sql-server-ver15

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SELECT 
       z.a AS               [Процедура]
     ,
       d.total_elapsed_time
       / d.execution_count
       / 1000000. AS        [Среднее время выполнения, сек.]
     ,
       d.last_elapsed_time
       / 1000000. AS        [Последнее время выполнения, сек.]
     , d.execution_count AS [Количество выполнений, шт.]
FROM 
     sys.dm_exec_procedure_stats AS d
     CROSS APPLY(VALUES( 
                        QUOTENAME(DB_NAME(d.database_id))+'.'+QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))+'.'+QUOTENAME(OBJECT_NAME([object_id], database_id))
                        )) AS z(a)
WHERE z.a IS NOT NULL
       ORDER BY 
                [Процедура];
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39912104
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

Таблица на другом сервере была? А фильтр по пользователю или для всех? Фильтр каких событий?
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39912133
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч
После запуска трассировки с нексолькоми фильтрами и записью в таблицу сервер умер
Что случилось, уронили со стола?
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39912144
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Максим Александровитч,

Для текущих запросов можно поиграться с
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT 
       z.a AS [Время, прошедшее со времени соединения с сервером, сек]
     , t.[text]
FROM 
     sys.sysprocesses AS s
     CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) AS t
                                                         CROSS APPLY(VALUES( 
                                                                            DATEDIFF(SECOND, s.login_time, GETDATE())
                                                                            )) AS z(a)
WHERE z.a > 100 -- выбрать все команды, у которых время, прошедшее со времени соединения с сервером дольше 100 сек
      AND s.[dbid] = DB_ID()
      AND spid != @@SPID
      AND [status] != 'sleeping'
       ORDER BY 
                z.a DESC;
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39912147
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
А фильтр по пользователю или для всех? Фильтр каких событий?
Планировалось с фильтром по одному пользователю, и событие комплитед с фиьтром по duration
Но видимо сам собой создался трейс без фильтров, и на все события, и сервер "упал" :-)
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39914031
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч
После запуска трассировки с нексолькоми фильтрами и записью в таблицу сервер умер
Вы профайлер что-ли запустили??
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39914033
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypoint,

Гениально. Может ещё фильтр по пользователю покажете как сделать?
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39914102
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mind,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT 
       z.a AS [Время, прошедшее со времени соединения с сервером, сек]
     , t.[text]
     , s.[loginame]
FROM 
     sys.sysprocesses AS s
     CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) AS t
                                                         CROSS APPLY(VALUES( 
                                                                            DATEDIFF(SECOND, s.login_time, GETDATE())
                                                                            )) AS z(a)
WHERE z.a > 100 -- выбрать все команды, у которых время, прошедшее со времени соединения с сервером дольше 100 сек
      AND s.[dbid] = DB_ID()
      AND s.spid != @@SPID
      AND s.[status] != 'sleeping'
      AND s.[loginame] = '[введите нужный логин]'
       ORDER BY 
                z.a DESC;
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39914232
nullin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
entrypoint, зачем во втором cross apply, values пишите?
...
Рейтинг: 0 / 0
Залогировать время выполненя запроса
    #39914234
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nullin,

entrypoint, зачем во втором cross apply, values пишите?

а что нужно писать ?
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 2 из 3
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Залогировать время выполненя запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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