Database

Como identificar os bancos de dados com maior uso de CPU no SQL Server

Quando você possui um servidor de banco de dados que está tendo um alto consumo de CPU é necessário fazer um trabalho de investigação para identificar a origem desse consumo. Ou quando está querendo identificar quem são os maiores consumidores de recurso do seu servidor SQL. O SQL Server Management Studio (SSMS) não possui nenhum relatório específico para identificar isso, porém é possível fazer uma consulta SQL que traga a informação de uso de CPU para cada um dos seus bancos de dados.

Para isso execute a consulta:

SELECT T.[Database], T.[CPUTimeAsPercentage]
   FROM
    (SELECT 
        [Database],
        CONVERT (DECIMAL (6, 3), [CPUTimeInMiliSeconds] * 1.0 / 
        SUM ([CPUTimeInMiliSeconds]) OVER () * 100.0) AS [CPUTimeAsPercentage]
     FROM 
      (SELECT 
          dm_execplanattr.DatabaseID,
          DB_Name(dm_execplanattr.DatabaseID) AS [Database],
          SUM (dm_execquerystats.total_worker_time) AS CPUTimeInMiliSeconds
       FROM sys.dm_exec_query_stats dm_execquerystats
       CROSS APPLY 
        (SELECT 
            CONVERT (INT, value) AS [DatabaseID]
         FROM sys.dm_exec_plan_attributes(dm_execquerystats.plan_handle)
         WHERE attribute = N'dbid'
        ) dm_execplanattr
       GROUP BY dm_execplanattr.DatabaseID
      ) AS CPUPerDb
    )  AS T
ORDER BY T.[CPUTimeAsPercentage] DESC

O retorno da consulta será o nome do banco de dados seguido do seu consumo.

A consulta utiliza informação do plano de execução, ou seja, ela depende de informações de uso.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *