Как найти самые медленные запросы - PullRequest
52 голосов
/ 04 мая 2009

Используя Sql Server 2005 Profiler, какие события, столбцы и фильтры вы отслеживаете, чтобы найти самые медленные запросы и хранимые процедуры?

Медленно = больше N секунд, 10 ради аргумента.

Ответы [ 3 ]

92 голосов
/ 04 мая 2009

В SQL 2005 вы можете использовать представления управления для поиска медленно выполняющихся запросов. Хороший скрипт, который я нашел недавно для производительности SQL-сервера , поможет вам начать; он перечисляет данные с самым медленным исполнением первым.

SELECT  creation_time 
        ,last_execution_time
        ,total_physical_reads
        ,total_logical_reads 
        ,total_logical_writes
        , execution_count
        , total_worker_time
        , total_elapsed_time
        , total_elapsed_time / execution_count avg_elapsed_time
        ,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) st
ORDER BY total_elapsed_time / execution_count DESC;
12 голосов
/ 04 мая 2009

Прежде чем использовать профилировщик, я проверяю встроенные отчеты об использовании. Щелкните правой кнопкой мыши базу данных, Отчеты, Стандартные отчеты, затем Статистика выполнения объекта.

В нем перечислены текущие кэшированные планы выполнения, а также количество ресурсов и количество их выполнений. Как правило, это дает очень хорошее представление о том, чем занят сервер.

4 голосов
/ 04 мая 2009

Столбец длительности делает это для меня, но иногда я смотрю и на столбцы чтения и записи.

Я использую фильтр TSQL: StmtCompleted для получения необработанных запросов. Возможно, вы захотите добавить к этому другие хранимые процедуры, но tsql - это «база», которую вам нужно просмотреть. Как говорится в статье MSDN

«Выполнение хранимой процедуры может контролироваться SP: начиная, SP: StmtStarting, SP: StmtCompleted и SP: Завершенные классы событий и все Классы событий TSQL. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...