SSMS
 sql >> Base de Dados >  >> Database Tools >> SSMS

Tempo de execução da consulta no Management Studio e criador de perfil. O que mede?


Se estou entendendo sua pergunta corretamente, você está primeiro questionando a diferença entre a duração informada pelo Profiler e as estatísticas apresentadas no SSMS (no canto inferior direito para o tempo geral e/ou por SET STATISTICS TIME ON). Além disso, você parece não estar convencido do comentário do DBA de produção de que a exibição está sendo executada na duração esperada de aproximadamente 60 segundos.

Primeiro, dos Manuais Online, as estatísticas que o SSMS reportaria via SET STATISTICS TIME ON:

"Exibe o número de milissegundos necessários para analisar, compilar e executar cada instrução."

Você está certo para isso. Quanto à Duração no Profiler, ela é descrita como:

"A duração (em microssegundos) do evento."

De onde estou, esses dois devem ser funcionalmente equivalentes (e, como tenho certeza que você notou, o Profiler relatará em microssegundos se você estiver indo contra o SQL 2005 ou posterior). Digo isso porque o "evento" nesse caso (referente à Duração no Profiler) é a execução do select, que inclui a entrega ao cliente; isso é consistente em ambos os casos.

Parece que você suspeita que a geografia é a culpada pela longa duração ao executar a consulta remotamente. Isso pode muito bem ser. Você pode testar isso executando o select na exibição em uma janela de consulta, gerando outra janela de consulta e revisando o tipo de espera na consulta:
select
    a.session_id
    ,a.start_time
    ,a.status
    ,a.command
    ,db_name(a.database_id) as database_name
    ,a.blocking_session_id
    ,a.wait_type
    ,a.wait_time
    ,a.cpu_time
    ,a.total_elapsed_time
    ,b.text
from sys.dm_exec_requests a
    cross apply sys.dm_exec_sql_text(a.sql_handle) b
where a.session_id != @@spid;

Eu suspeito que você veria algo como ASYNC_NETWORK_IO como o tipo de espera se a geografia for o problema - caso contrário, confira o que vem disso. Se você estiver criando o perfil da consulta de sua execução remota, a duração refletirá as estatísticas de tempo que você vê no SSMS. NO ENTANTO, se você estiver usando o Profiler e descobrir que a duração desta consulta quando executada a partir de um dos servidores da web que fica no mesmo data center que o SQL Server ainda está demorando 7 minutos, então o DBA é um grande e gordo mentiroso :). Eu usaria o Profiler para gravar consultas que demoram mais de 1 minuto, tentar filtrar sua visualização e tirar a média para ver se você está no objetivo de desempenho.

Como não há outras respostas postadas, estou preocupado por estar fora da base aqui - mas é tarde e sou novo nisso, então pensei em tentar!