A duração de rpc_completed (micro_sec) = rpc_starting.timestamp - rpc_completed.timestamp? No meu caso, vi uma grande diferença entre eles. A duração é de apenas alguns milissegundos, onde rpc_starting.timestamp - rpc_completed.timestamp é de 6 a 10 segundos.
Estou na empresa 2016 sp2-cu14, o campo de duração está em microssegundos. Eu fiz algo semelhante para capturar sp_statement_starting e sp_statement_completed, sp_batch_starting/sp_batch_completed dentro de rpc_starting e rpc_completed. mostra a mesma situação. Minha pergunta é "qual me diz quanto tempo a consulta realmente levou? É Duração em sp_statement_completed ou a diferença entre iniciar e concluir?"
"Duração" no
sp_statement_completed
evento é quanto tempo a consulta realmente levou no servidor. Não inclui o tempo gasto no envio de resultados para o cliente (geralmente, veja aqui para detalhes).Não tenho 100% de certeza por que a coluna de carimbo de data/hora dos eventos estendidos mostra uma discrepância tão grande entre os eventos "iniciando" e "concluídos", mas não é aí que você deseja concentrar sua atenção.
Não acredito que a coluna de duração represente a diferença de tempo da coluna timestamp_UTC entre os eventos
rpc_starting
e .rpc_completed
Supondo que você esteja em qualquer versão do SQL Server ainda relevante (2008 R2+) essa coluna está em unidades de microssegundos (qualquer versão mais antiga e em milissegundos) e, portanto, é um valor muito pequeno em seus exemplos (por exemplo, 1.872 microssegundos = 0,00187 segundos ).Meu palpite com base na descrição da Microsoft é que é literalmente quanto tempo levou para que esse evento específico ocorresse e fosse registrado.