Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-Leistung TOP IO-Abfrage -2

Hallo,

Wenn Sie von einem Kunden eine Beschwerde über Langsamkeit erhalten haben, müssen Sie die SQL Server-Instanz und die Datenbank überwachen, die eine Menge Ressourcen verbraucht.

SQL Server DBA sollte die Datenbank jedes Mal überwachen, und wenn es viele SQLs gibt, die eine lange Ausführungszeit haben oder viele E/A-Ressourcen verbrauchen, sollte dies dem Entwickler und dem Entwickler gemeldet werden, und der DBA sollte diese SQLs untersuchen.

Sie können die TOP 50 IO-Abfragen in der SQL Server-Datenbank mit der folgenden Abfrage finden.

select 
    q.[text],
SUBSTRING(q.text, (highest_cpu_queries.statement_start_offset/2)+1, 
        ((CASE highest_cpu_queries.statement_end_offset
          WHEN -1 THEN DATALENGTH(q.text)
         ELSE highest_cpu_queries.statement_end_offset
         END - highest_cpu_queries.statement_start_offset)/2) + 1) AS statement_text,    
    
    highest_cpu_queries.total_worker_time,
    highest_cpu_queries.total_logical_reads,
	highest_cpu_queries.last_execution_time,
    highest_cpu_queries.execution_count,
    q.dbid,
    q.objectid,
    q.number,
    q.encrypted,
     highest_cpu_queries.plan_handle
from 
    (select top 50 
          qs.last_execution_time,
          qs.execution_count,
        qs.plan_handle, 
        qs.total_worker_time,
        qs.statement_start_offset,
        qs.statement_end_offset,
        qs.total_logical_reads
    from 
        sys.dm_exec_query_stats qs
    order by qs.total_worker_time desc) as highest_cpu_queries
    cross apply sys.dm_exec_sql_text(plan_handle) as q
order by highest_cpu_queries.total_logical_reads desc;