Количество наиболее трудоемких запросов на SQL сервере - PullRequest
0 голосов
/ 17 июня 2020

Как подсчитать наиболее трудоемкие запросы для конкретной базы данных на SQL сервере

Например: количество запросов, время которых составляет от 30 до 45 минут, количество запросов, время которых составляет от 45 до 60 мин, количество запросов, время которых превышает 60 мин.

1 Ответ

0 голосов
/ 17 июня 2020

Для этого есть DMV, sys.dm_exec_query_stats (Transact- SQL) . Например:

Поиск первых N запросов

В следующем примере возвращается информация о пяти первых запросах, ранжированных по среднему времени ЦП. В этом примере запросы агрегируются в соответствии с их запросом ha sh, так что логически эквивалентные запросы сгруппированы по их совокупному потреблению ресурсов.

SELECT TOP 5 query_stats.query_hash AS "Query Hash",   
    SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS "Avg CPU Time",  
    MIN(query_stats.statement_text) AS "Statement Text"  
FROM   
    (SELECT QS.*,   
    SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,  
    ((CASE statement_end_offset   
        WHEN -1 THEN DATALENGTH(ST.text)  
        ELSE QS.statement_end_offset END   
            - QS.statement_start_offset)/2) + 1) AS statement_text  
     FROM sys.dm_exec_query_stats AS QS  
     CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as query_stats  
GROUP BY query_stats.query_hash  
ORDER BY 2 DESC;

Ваш конкретный c вопрос задает о execution_count столбец, но, как видно выше, можно найти много полезной информации.

...