2010-01-25 20 views
75

Sto eseguendo un'importazione di dati (utilizzando C#/Linq), e naturalmente sto cercando di ottimizzare le mie query il più possibile. A tal fine sto eseguendo una traccia sul DB utilizzando SQL Server Profiler, con la mia traccia filtrata dal mio nome di accesso SQL (è un nome che può essere attribuito unicamente al mio processo di importazione dei dati).Che cos'è "Audit Logout" in SQL Server Profiler?

Stranamente, la maggior parte delle mie istruzioni SQL sono molto veloci :) - molto poche query interrompono persino il limite di 1 ms. Ma a metà tra tutte le mie domande ci sono diverse righe in cui EventClass è "Audit Login" o "Audit Logout" - e la durata di un "Audit Logout" può arrivare fino a un minuto!

Questo ha qualcosa a che fare con il fatto che sto usando le transazioni nella mia importazione? Se è così, c'è un modo per trovare quali sono le query di grande impatto in modo da poter ripulire quelle?

+0

correlati: http://stackoverflow.com/questions/279401/sql-connection-pooling-and-audit-login-logout/468222#468222 –

+0

correlati: https : //stackoverflow.com/questions/44920375/sql-server-profiler-how-to-inspect-understand-the-duration-for-the-audit-logout – Stefan

risposta

68

Se ricordo correttamente, la durata di un Logout di verifica è la quantità di tempo in cui la connessione è stata aperta. Per esempio. niente a che fare con la velocità del comando - solo la quantità di tempo in cui il login è stato "registrato".

+6

Interessante, grazie! Ma allora perché il numero di letture è così alto (~ 400.000) quando il numero di letture per le query tra "login" e "logout" è solo 56? –

+0

È il numero di ms dal login al logout. Non la quantità effettiva di volte in cui le query all'interno della connessione utilizzata. 400 000ms è di circa 7 minuti. Guarda la CPU, legge e scrive le colonne per cercare e individuare le query che hanno un elevato utilizzo della CPU e/o del disco - entrambe le prestazioni di uccisione. – Thies

+0

Mi dispiace, intendi che "legge" le risposte alla misurazione del tempo? –

11

Gli eventi di accesso/disconnessione sono relativi all'impostazione/eliminazione. IIRC il tempo è il 'è stato effettuato il login per tempo' in contrasto con una durata di elaborazione come con altri eventi di registro.

In generale, si nasconde questi eventi a meno che non si sospetta che ci sia un problema con la gestione del pool di connessioni, ecc

I tempi di prime per i lotti dovrebbero essere sufficienti per diagnosticare il tempo l'attività effettiva sta prendendo compreso l'impatto di qualsiasi transazioni ecc.

+0

È possibile ispezionare "l'impostazione/lo strappo" in modo più dettagliato? Si prega di vedere seguente domanda correlata: https://stackoverflow.com/questions/44920375/sql-server-profiler-how-to-inspect-understand-the-duration-for-the-audit-logout – Stefan

2

Vale anche la pena notare come in this answer che Audit Login/Logout può solo significare che la connessione viene riutilizzata/restituita al pool di connessioni.

3

La classe di evento Audit Logout indica che un utente si è disconnesso da Microsoft SQL Server (disconnesso). Gli eventi di questa classe vengono attivati ​​dalle nuove connessioni o dalle connessioni riutilizzate da un pool di connessioni.

è il tempo totale in cui la connessione è stata eseguita, incluso il tempo di inattività, quindi non indica un problema di prestazioni. Anche la profilazione degli accessi/logout è molto improbabile che causi un problema di prestazioni. Faresti meglio a cercare query poco performanti, possibilmente query di lunga durata.

Per maggiori informazioni vi suggerisco https://msdn.microsoft.com/en-us/library/ms175827.aspx :)

+0

Sei sicuro degli eventi di Audit Logout vengono attivati ​​quando le connessioni vengono riutilizzate da un pool di connessioni? Ho pensato che i pool di connessioni fossero un esempio di una ragione per cui potresti vedere alte durate di Audit Logout, perché la connessione è aperta ma inattiva per gran parte della sua vita, –

Problemi correlati