Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Query I/O PRINCIPALE sulle prestazioni di SQL Server -2

Ciao,

Se hai ricevuto un reclamo di lentezza dal cliente, devi monitorare l'istanza di SQL Server e il database che sql sta consumando molte risorse.

Il DBA di SQL Server dovrebbe monitorare il database ogni volta e se ci sono molti sql che stanno eseguendo lunghi tempi di esecuzione o consumano molte risorse IO, dovrebbero essere segnalati allo sviluppatore e allo sviluppatore e dba dovrebbe esaminare questi sql.

Puoi trovare le TOP 50 query IO nel database di SQL Server con la seguente query.

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;