Время начала запроса SQL Server
Как я могу получить временные моменты, разграничивающие начало и конец SQL-запроса в SQL Server? Если я установлю время статистики, есть ли способ добавить итоговое время процессора / истекшее время к текущей дате?
Спасибо
1 ответ
Вы могли бы использовать
1) Трассировка SQL (включая SQL Profiler) для перехвата { SP:StmtCompleted | SP:StmtCompleted } со следующими столбцами: процессорное время, длительность / истекшее время, время начала и окончания каждого запроса
или же
2) Расширенные сеансы событий (SQL2008+)
В обоих случаях эти события (%:StmtCompleted
) может оказать негативное влияние на производительность сервера, поэтому не используйте эти методы на интенсивно используемых серверах (производство). Если у вас есть проблемы с производительностью на рабочем сервере, это может усугубить проблему.
3) Вместо этого, если вы хотите обнаружить эти {запросы / sql модули} с проблемами производительности, вы можете использовать
SQL2005 + sys.dm_exec_query_stats
SQL2008 + sys.dm_exec_proc_stats
SQL2008 + sys.dm_exec_trigger_stats
Пример:
SELECT TOP(50) ...
total_worker_time *1.00 / execution_count AS Avg_CPU_time,
total_elapsed_time *1.00 / execution_count AS Avg_Duration,
total_logical_reads *1.00 / execution_count AS Avg_LIO_time
FROM sys.dm_..._stats
ORDER BY Avg_LIO_time DESC
Вы могли бы использовать сценарии Гленна Берри http://sqlserverperformance.wordpress.com/2013/11/15/sql-server-diagnostic-information-queries-for-november-2013/