Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Requête d'E/S TOP des performances de SQL Server -2

Bonjour,

Si vous recevez une plainte de lenteur de la part d'un client, vous devez surveiller l'instance SQL Server et la base de données SQL qui consomme beaucoup de ressources.

L'administrateur de base de données SQL Server doit surveiller la base de données à chaque fois et s'il existe de nombreux sql qui exécutent un long temps d'exécution ou consomment beaucoup de ressources d'E/S, cela doit être signalé au développeur et au développeur et dba doit examiner ces sql.

Vous pouvez trouver les requêtes TOP 50 IO dans la base de données SQL Server avec la requête suivante.

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;