Estou trabalhando para medir o impacto de desempenho dos Backups na CPU. Eu gostaria de capturar todas as operações de backup e uso da CPU. Estou executando um backup completo semanal, diferença diária e backup de log de 15 minutos. Existem opções em Extended Events que podemos usar para capturar o uso da CPU?
CREATE EVENT SESSION [Backup_Events_Trace] ON SERVER ADD EVENT sqlserver.backup_restore_progress_trace (ACTION(sqlserver.client_hostname, sqlserver.database_name))
,ADD EVENT sqlserver.databases_backup_restore_throughput (ACTION(sqlserver.client_hostname, sqlserver.database_name)) ADD TARGET package0.event_file (SET filename = N'L:\XE\Backup_Events_Trace.xel')
WITH (STARTUP_STATE = OFF)
GO
Você pode buscar a utilização da CPU adicionando este evento:
sqlos.scheduler_monitor_system_health_ring_buffer_recorded
Adicionar isso à sua sessão de Eventos Estendidos retornará estatísticas de utilização da CPU (entre outras).
Quando você consulta os dados, há dois campos -
process_utilization
esystem_idle
que representam a utilização da CPU do processo SQL e a % de CPU ociosa, respectivamente. Ao subtrairprocess_utilization
desystem_idle
você obtém a CPU não SQL usada do servidor.Além disso, até onde eu sei, você também pode obter o uso da CPU dos eventos estendidos de integridade do sistema embutido.
Ele mantém um controle das métricas da CPU junto com as consultas executadas. Você pode querer ajustar conforme necessário, se estiver interessado. Caso contrário, você sempre pode ir para outros eventos ou extrair dados do cache usando DMVs, se possível