sql >> Base de Datos >  >> RDS >> Sqlserver

Estadísticas de uso de CPU de bases de datos de SQL Server

Hola,

En general, hay muchas bases de datos en la instancia de SQL Server. La ejecución de bases de datos en la misma instancia es muy importante para la consolidación y la licencia de SQL Server.

Cuando muchas bases de datos se ejecutan en la misma instancia de SQL Server, el uso de recursos de las bases de datos es muy crítico.

Si alguna base de datos usa muchos recursos de CPU, entonces debemos monitorear la base de datos y por qué esa base de datos consume más recursos de CPU que otras.

Podemos aprender que todas las bases de datos usan recursos de CPU con el siguiente script.

WITH DB_CPU_STATS_ON_INSTANCE
AS
(SELECT DatabaseID, DB_Name(DatabaseID) AS [DatabaseName], SUM(total_worker_time) AS [CPU_Time_Ms]
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY (SELECT CONVERT(int, value) AS [DatabaseID] 
FROM sys.dm_exec_plan_attributes(qs.plan_handle)
WHERE attribute = N'dbid') AS F_DB
GROUP BY DatabaseID)
SELECT ROW_NUMBER() OVER(ORDER BY [CPU_Time_Ms] DESC) AS [row_num],
DatabaseName, [CPU_Time_Ms], 
CAST([CPU_Time_Ms] * 1.0 / SUM([CPU_Time_Ms]) OVER() * 100.0 AS DECIMAL(5, 2)) AS [CPUPercent]
FROM DB_CPU_STATS_ON_INSTANCE
WHERE DatabaseID > 4 
AND DatabaseID <> 32767 
ORDER BY row_num OPTION (RECOMPILE);