Qu'est-ce que «Déconnexion d'audit» dans SQL Server Profiler?

91

J'exécute une importation de données (en utilisant C # / Linq), et naturellement j'essaie d'optimiser mes requêtes autant que possible. À cette fin, j'exécute une trace sur la base de données à l'aide de SQL Server Profiler, avec ma trace filtrée par mon nom de connexion SQL (c'est un nom qui peut être attribué de manière unique à mon processus d'importation de données).

Curieusement, la plupart de mes instructions SQL sont vraiment rapides :) - très peu de requêtes dépassent même la barre des 1 ms. Mais entre toutes mes requêtes, plusieurs lignes sont espacées où la classe EventClass est "Audit Login" ou "Audit Logout" - et la durée d'un "Audit Logout" peut aller jusqu'à une minute!

Cela a-t-il quelque chose à voir avec le fait que j'utilise des transactions dans mon import? Si oui, y a-t-il un moyen de trouver quelles sont les requêtes les plus importantes afin que je puisse les nettoyer?

Shaul Behr
la source
en relation: stackoverflow.com/questions/279401/…
Ruben Bartelink

Réponses:

81

Si je me souviens bien, la durée d'une déconnexion d'audit est la durée pendant laquelle la connexion a été ouverte. Par exemple, rien à voir avec la vitesse de la commande - juste la durée pendant laquelle la connexion a été «connectée».

Thiès
la source
9
Intéressant, merci! Mais alors pourquoi le nombre de lectures est-il si élevé (~ 400 000) alors que le nombre de lectures pour les requêtes entre «login» et «logout» n'est que de 56?
Shaul Behr
C'est le nombre de ms entre la connexion et la déconnexion. Pas le nombre réel de requêtes utilisées dans la connexion. 400 000ms représentent environ 7 minutes. Examinez le processeur, lit et écrit des colonnes pour essayer de localiser les requêtes qui utilisent beaucoup le processeur et / ou le disque - les deux tuent les performances.
Thies
Je suis désolé, voulez-vous dire que les Readsréponses à la mesure du temps?
Johnny_D
1
La valeur de déconnexion "Reads" me semble vraiment élevée, étant donné qu'il n'y a qu'une seule opération avec 3 lectures répertoriées entre elle et la connexion.
Triynko
1
Il convient de noter que la Readscolonne ne représente pas les lignes renvoyées par les requêtes, mais le nombre de lectures de disque logique. Une requête qui ne retourne même rien peut analyser une table entière de 1 million d'enregistrements à la recherche du rien à retourner, ce qui générerait un très grand nombre de lectures. Ainsi, le nombre de lectures n'est pas vraiment corrélé naturellement avec le nombre de requêtes.
Pace
12

Les événements de connexion / déconnexion sont liés à la configuration / suppression. IIRC, l'heure correspond à la durée de connexion, par opposition à une durée de traitement comme pour les autres événements du journal.

En général, on cache ces événements sauf si vous pensez qu'il y a un problème avec la gestion du pool de connexions, etc.

Les temps bruts pour les lots doivent être suffisants pour diagnostiquer le temps que prend l'activité réelle, y compris l'impact de toutes les transactions, etc.

Ruben Bartelink
la source
Est-il possible d'inspecter cette «mise en place / démontage» plus en détail? Veuillez consulter la question connexe suivante: stackoverflow.com/questions/44920375/…
Stefan
3

La classe d'événements Audit Logout indique qu'un utilisateur s'est déconnecté (déconnecté) de Microsoft SQL Server. Les événements de cette classe sont déclenchés par de nouvelles connexions ou par des connexions réutilisées à partir d'un pool de connexions.

il s'agit de la durée totale de connexion de la connexion, y compris le temps d'inactivité, donc cela n'indique pas un problème de performances. Le profilage des connexions / déconnexions est également très peu susceptible de provoquer un problème de performances. Vous feriez mieux de rechercher des requêtes peu performantes, éventuellement des requêtes de longue durée.

Pour plus d'informations, je suggère https://msdn.microsoft.com/en-us/library/ms175827.aspx :)

Michele Caggiano
la source
1
Êtes-vous sûr que les événements de déconnexion d'audit sont déclenchés lorsque les connexions sont réutilisées à partir d'un pool de connexions? Je pensais que les pools de connexions étaient un exemple d'une raison pour laquelle vous pourriez voir des durées de déconnexion d'audit élevées, car la connexion est ouverte mais inactive pendant la majeure partie de sa vie,
Adam Goodwin
2

Il convient également de noter que dans cette réponse , l'audit de connexion / déconnexion peut simplement signifier que la connexion est réutilisée / renvoyée au pool de connexions.

Rory
la source