Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Estatísticas de uso de CPU de bancos de dados SQL Server


Oi,

Geralmente, existem muitos bancos de dados na instância do SQL Server. A execução de bancos de dados na mesma instância é muito importante para a licença e consolidação do SQL Server.





Quando muitos bancos de dados são executados na mesma instância do SQL Server, o uso de recursos dos bancos de dados é muito crítico.

Se algum banco de dados usa muitos recursos da CPU, devemos monitorar o banco de dados e por que esse banco de dados consome mais recursos da CPU do que outros.

Podemos aprender que todos os bancos de dados usam recursos de CPU com o seguinte 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);