2010-05-14 4 views
5

У меня есть база данных в SQL Server 2008, и есть много машин, которые создают против нее запросы. Я знаю, что есть профилировщик SQL Server, но я не очень хорошо знаю, как его использовать.SQL самый выполненный запрос?

Есть ли способ узнать, какие наиболее распространенные запросы выполняются в базе данных? Через профайлер или нет, это не имеет значения.

спасибо, что заблаговременно!

ответ

20
 SELECT * 
     FROM sys.dm_exec_query_stats AS a 
CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) AS b 
    ORDER BY execution_count DESC 

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

Не уверен, будет ли это удобно или нет, но это SQL даст вам медленные 100 запросов:

SELECT TOP 100 
      [Object_Name] = object_name(st.objectid), 
      creation_time, 
      last_execution_time, 
      total_cpu_time = total_worker_time/1000, 
      avg_cpu_time = (total_worker_time/execution_count)/1000, 
      min_cpu_time = min_worker_time/1000, 
      max_cpu_time = max_worker_time/1000, 
      last_cpu_time = last_worker_time/1000, 
      total_time_elapsed = total_elapsed_time/1000 , 
      avg_time_elapsed = (total_elapsed_time/execution_count)/1000, 
      min_time_elapsed = min_elapsed_time/1000, 
      max_time_elapsed = max_elapsed_time/1000, 
      avg_physical_reads = total_physical_reads/execution_count, 
      avg_logical_reads = total_logical_reads/execution_count, 
      execution_count, 
      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 qs 
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st 
    ORDER BY total_worker_time/execution_count DESC 
+0

Это жизнь заставок. Может мгновенно увидеть, какие запросы не удалось кэшировать. – JakobMillah

Смежные вопросы