O que é “Logout de auditoria” no SQL Server Profiler?

91

Estou executando uma importação de dados (usando C # / Linq) e, naturalmente, estou tentando otimizar minhas consultas o máximo possível. Para esse fim, estou executando um rastreamento no banco de dados usando o SQL Server Profiler, com meu rastreamento filtrado pelo meu nome de login do SQL (é um nome que pode ser atribuído exclusivamente ao meu processo de importação de dados).

Estranhamente, a maioria das minhas instruções SQL são realmente rápidas :) - muito poucas consultas ultrapassam a marca de 1 ms. Mas espaçadas entre todas as minhas consultas estão várias linhas onde a EventClass é "Audit Login" ou "Audit Logout" - e a duração de um "Audit Logout" pode ser de até um minuto!

Isso tem algo a ver com o fato de que estou usando transações na minha importação? Em caso afirmativo, há alguma maneira de descobrir quais são as consultas de maior impacto para que eu possa limpá-las?

Shaul Behr
fonte

Respostas:

81

Se bem me lembro, a duração de um logout de auditoria é a quantidade de tempo que a conexão ficou aberta. Por exemplo, nada a ver com a velocidade do comando - apenas a quantidade de tempo que o login permaneceu 'conectado'.

Thies
fonte
9
Interessante, obrigado! Mas então por que o número de leituras é tão alto (~ 400.000) quando o número de leituras para as consultas entre "login" e "logout" é de apenas 56?
Shaul Behr
É o número de ms do login ao logout. Não a quantidade real de vezes que as consultas na conexão foram usadas. 400 000ms são cerca de 7 minutos. Olhe para a CPU, leia e escreva colunas para tentar localizar consultas com alto uso de CPU e / ou disco - ambos eliminando o desempenho.
Thies
Sinto muito, você quer dizer que as Readsrespostas à medição do tempo?
Johnny_D
1
O valor de "Leituras" de logout parece muito alto, considerando que há apenas uma operação com 3 leituras listadas entre ela e o login.
Triynko
1
Deve-se notar que a Readscoluna não representa as linhas retornadas pelas consultas, mas o número de leituras do disco lógico. Uma consulta que nem mesmo retorna nada pode varrer uma tabela inteira de 1 milhão de registros procurando o nada a ser retornado, o que geraria um número muito grande de leituras. Portanto, o número de leituras não está realmente correlacionado com o número de consultas.
Pace
12

Os eventos de login / logout estão relacionados à configuração / desativação. IIRC o tempo é o 'estava conectado por tempo', em oposição a uma duração de processamento como com outros eventos de log.

Em geral, esses eventos são ocultados, a menos que você suspeite que haja um problema com o gerenciamento do pool de conexões, etc.

Os tempos brutos para os lotes devem ser suficientes para diagnosticar o tempo que a atividade real está levando, incluindo o impacto de quaisquer transações, etc.

Ruben Bartelink
fonte
É possível inspecionar essa "montagem / destruição" com mais detalhes? Consulte a seguinte pergunta relacionada: stackoverflow.com/questions/44920375/…
Stefan
3

A classe de evento Audit Logout indica que um usuário fez logoff (logoff) do Microsoft SQL Server. Os eventos nesta classe são disparados por novas conexões ou por conexões que são reutilizadas de um pool de conexão.

é o tempo total durante o qual a conexão esteve conectada, incluindo o tempo ocioso, portanto, não indica um problema de desempenho. Além disso, a criação de perfil de logins / logouts é muito improvável de causar problemas de desempenho. Seria melhor você procurar consultas de baixo desempenho, possivelmente consultas de longa duração.

Para obter mais informações, sugiro https://msdn.microsoft.com/en-us/library/ms175827.aspx :)

Michele Caggiano
fonte
1
Tem certeza de que os eventos de logoff de auditoria são disparados quando as conexões são reutilizadas de um pool de conexão? Achei que os pools de conexão fossem um exemplo de um motivo pelo qual você pode ver longas durações de Logout de auditoria, porque a conexão está aberta, mas ociosa durante a maior parte de sua vida,
Adam Goodwin
2

Também vale a pena observar que, nesta resposta, o Login / Logout de Auditoria pode significar apenas que a conexão está sendo reutilizada / retornada ao pool de conexão.

Rory
fonte