Usando o sql profiler, rastreamos todas as consultas lentas (filtro por duração/leituras) para ver onde podemos otimizar. Eventos usados:
- RPC: Concluído
- SQL:BatchCompleted
Filtre por Duração.
Se eu adicionar o evento ShowPlan XML, não posso filtrar a duração da consulta subjacente, criando uma carga enorme à medida que centenas/milhares de consultas chegam a cada segundo
Como capturar apenas o plano de execução para as entradas que correspondem à duração do filtro/leituras das consultas capturadas dos outros eventos?
A maneira mais fácil seria parar de usar o Profiler e ir para Extended Events. O evento query_post_execution_showplan tem duração embutida e você pode usar isso para filtrar a captura com bastante clareza. Aqui está um exemplo simples:
Apenas saiba que capturar planos pode ser muito caro.