Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хочу замерять время выполнения хранимых процедур? / 25 сообщений из 25, страница 1 из 1
10.03.2021, 09:52
    #40052163
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
Всем привет, разработчики хотят статистику по работе хранимых процедур, скорее всего всех, посоветуйте, как это лучше организовать.

1. То что приходит в голову, это завести табличку с 3 полями datetime, proc_name, duration

Далее, как то автоматически добавить в начало и конец каждой хранимки @start @end insert into table () select GETDATE(),@ptoc_name,@end-@start

Но может есть другие, более простые способы реализовать эту задачу?
...
Рейтинг: 0 / 0
10.03.2021, 10:11
    #40052171
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
sys.dm_exec_procedure_stats
...
Рейтинг: 0 / 0
10.03.2021, 11:38
    #40052201
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
invm
sys.dm_exec_procedure_stats


То что нужно! Спасибо большое.
...
Рейтинг: 0 / 0
10.03.2021, 11:45
    #40052208
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
invm
sys.dm_exec_procedure_stats


А имя хранимки из данного представления получать через функцию OBJECT_NAME?
Код: sql
1.
select OBJECT_NAME(object_id) from sys.dm_exec_procedure_stats



В данном запросе вижу множество NULL
...
Рейтинг: 0 / 0
10.03.2021, 12:01
    #40052221
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
teCa,

OBJECT_NAME ( object_id [, database_id ] )
...
Рейтинг: 0 / 0
10.03.2021, 12:01
    #40052222
архивариус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-- Top Cached SPs By Total Worker time. Worker time relates to CPU cost  (Query 57) (SP Worker Time)
SELECT TOP(25) p.name AS [SP Name], qs.total_worker_time AS [TotalWorkerTime], 
qs.total_worker_time/qs.execution_count AS [AvgWorkerTime], qs.execution_count, 
ISNULL(qs.execution_count/DATEDIFF(Minute, qs.cached_time, GETDATE()), 0) AS [Calls/Minute],
qs.total_elapsed_time, qs.total_elapsed_time/qs.execution_count 
AS [avg_elapsed_time], qs.cached_time
FROM sys.procedures AS p WITH (NOLOCK)
INNER JOIN sys.dm_exec_procedure_stats AS qs WITH (NOLOCK)
ON p.[object_id] = qs.[object_id]
WHERE qs.database_id = DB_ID()
AND DATEDIFF(Minute, qs.cached_time, GETDATE()) > 0
ORDER BY qs.total_worker_time DESC OPTION (RECOMPILE);

teCa,
...
Рейтинг: 0 / 0
10.03.2021, 12:14
    #40052229
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
Спасибо большой,разобрался со всем.
...
Рейтинг: 0 / 0
16.03.2021, 17:16
    #40054185
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
Подскажите, по каким причинам хранимка может не попадать в это представление?
...
Рейтинг: 0 / 0
16.03.2021, 17:22
    #40054189
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
teCa
Подскажите, по каким причинам хранимка может не попадать в это представление?


ей просто надоела вся эта фигня
...
Рейтинг: 0 / 0
16.03.2021, 17:28
    #40054205
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
Ролг Хупин,

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

Код: sql
1.
exec procZakaz_SuperMainFull_V3_vol2



данная процедура выполняется 1 раз в сутки, но:

Код: sql
1.
select * from sys.dm_exec_procedure_stats where OBJECT_NAME(object_id)='procZakaz_SuperMainFull_V3_vol2'



возвращает:
автор(затронуто строк: 0)

Время выполнения: 2021-03-16T17:27:43.0146785+03:00
...
Рейтинг: 0 / 0
16.03.2021, 17:34
    #40054212
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
teCa
Подскажите, по каким причинам хранимка может не попадать в это представление?

это документировано

дока The view returns one row for each cached stored procedure plan, and the lifetime of the row is as long as the stored procedure remains cached.
When a stored procedure is removed from the cache, the corresponding row is eliminated from this view.

выбросило процу из кэша -> нет инфы в dmv
...
Рейтинг: 0 / 0
16.03.2021, 17:37
    #40054216
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
Код: sql
1.
2.
use MyDB;
select * from sys.dm_exec_procedure_stats where database_id = db_id() and OBJECT_NAME(object_id)='procZakaz_SuperMainFull_V3_vol2'
...
Рейтинг: 0 / 0
16.03.2021, 17:44
    #40054221
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
komrad,

Дело в том, что я каждые 5 минут логирую это представление, хранимка выполняется порядка 10 часов и внутри содержит большое количество запросов. В мой лог эта процедура не попала, мог ли сервер не поместить в кэш "большой", по его мнению, план?
...
Рейтинг: 0 / 0
16.03.2021, 17:46
    #40054222
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
invm
Код: sql
1.
2.
use MyDB;
select * from sys.dm_exec_procedure_stats where database_id = db_id() and OBJECT_NAME(object_id)='procZakaz_SuperMainFull_V3_vol2'



Тоже пустой результат
...
Рейтинг: 0 / 0
16.03.2021, 18:06
    #40054234
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
...
Рейтинг: 0 / 0
16.03.2021, 18:07
    #40054237
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
teCa,

а проца случаем не c with recompile?
...
Рейтинг: 0 / 0
17.03.2021, 09:00
    #40054420
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
komrad
teCa,

а проца случаем не c with recompile?


Без.
...
Рейтинг: 0 / 0
17.03.2021, 09:07
    #40054422
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
Владислав Колосов


авторВремя существования строки равно времени пребывания хранимой процедуры в кэше.

Получается, что в кэше этой процедуры не появляется или в кэше этот план храниться всего несколько минут.
...
Рейтинг: 0 / 0
17.03.2021, 10:52
    #40054466
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
teCa


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

либо его вытесняет из сразу после исполнения

наблюдал такой случай, когда план большой процы выносил весь процедурный кэш при своей работе, а по окончании его самого выбрасывало из кэша другими (новыми) планами
...
Рейтинг: 0 / 0
17.03.2021, 11:25
    #40054485
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
komrad
ибо его вытесняет из сразу после исполнения


В том то и дело, что хранимка работает несколько часов, и в момент её работы плана в кэше уже нет.
...
Рейтинг: 0 / 0
17.03.2021, 12:45
    #40054529
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
teCa,

не уже нет, а ещё нет, см. ссылку выше.
измерить время выполнения можно трассировкой (расширенными событиями) или внедрением кода в процедуру.
Есть еще вариант - добавить процедуру в джоб и он будет фиксировать продолжительность выполнения шага с своём журнале. Можно регистрировать на вызывающей стороне, вариантов достаточно.
...
Рейтинг: 0 / 0
17.03.2021, 12:48
    #40054534
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
Без анализа входных параметров ХП, логгирование времени выполнения бессмысленно.
...
Рейтинг: 0 / 0
17.03.2021, 12:54
    #40054541
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
L_argo,

ну почему, можно вычислить медианное значение или среднее и давать прогноз. Зависит от постановки задачи.
...
Рейтинг: 0 / 0
17.03.2021, 14:11
    #40054571
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
Хранимка без параметров, время её выполнения я знаю, план хотелось увидеть для этой процедуры.
...
Рейтинг: 0 / 0
17.03.2021, 14:18
    #40054573
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу замерять время выполнения хранимых процедур?
teCa
план хотелось увидеть для этой процедуры.
Оценочный
Код: sql
1.
2.
3.
4.
5.
6.
set showplan_xml on;
go
exec Процедура;
go
set showplan_xml off;
go


Актуальный - https://techcommunity.microsoft.com/t5/sql-server/using-xevents-to-capture-an-actual-execution-plan/ba-p/392136
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хочу замерять время выполнения хранимых процедур? / 25 сообщений из 25, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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