2010-01-25 35 views
75

Estoy ejecutando una importación de datos (usando C#/Linq), y naturalmente estoy tratando de optimizar mis consultas tanto como sea posible. Para este fin estoy rastreando el DB usando SQL Server Profiler, con mi rastro filtrado por mi nombre de inicio de sesión SQL (es un nombre que se puede atribuir de manera única a mi proceso de importación de datos).¿Qué es "Audit Logout" en SQL Server Profiler?

Curiosamente, la mayoría de mis declaraciones de SQL son realmente rápidas :): muy pocas consultas incluso superan la marca de 1 ms. Pero espaciadas entre todas mis consultas hay varias filas donde el EventClass es "Audit Login" o "Audit Logout" - ¡y la duración de un "Audit Logout" puede ser de hasta un minuto!

¿Esto tiene algo que ver con el hecho de que estoy usando transacciones en mi importación? Si es así, ¿hay alguna forma de encontrar cuáles son las consultas más impactantes para que pueda limpiarlas?

+0

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

+0

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

Respuesta

68

Si mal no recuerdo, la duración de un cierre de sesión de auditoría es la cantidad de tiempo que se abrió la conexión. P.ej. nada que ver con la velocidad del comando, solo la cantidad de tiempo que el inicio de sesión estaba 'conectado'.

+6

Interesante, gracias! Pero entonces, ¿por qué el número de lecturas es tan alto (~ 400,000) cuando el número de lecturas para las consultas entre el "inicio de sesión" y el "cierre de sesión" es solo 56? –

+0

Es el número de ms desde el inicio de sesión hasta el cierre de sesión. No es la cantidad real de veces que se usaron las consultas dentro de la conexión. 400 000ms es aproximadamente 7 minutos. Mire la CPU, lea y escriba columnas para tratar de localizar las consultas que tienen un uso elevado de CPU y/o disco, lo que mata el rendimiento. – Thies

+0

Lo siento, ¿te refieres a las respuestas 'Lectura' de la medición del tiempo? –

11

Los eventos de conexión/desconexión están relacionados con la configuración/eliminación. IIRC es el momento en que se "inició sesión por tiempo" en lugar de una duración de procesamiento como con otros eventos de registro.

En general, se esconde estos eventos a menos que sospeche que hay un problema con la gestión de la agrupación de conexiones, etc.

Los tiempos primas para los lotes deben ser suficientes para diagnosticar el tiempo de la actividad real está tomando incluyendo el impacto de cualquier transacciones, etc.

+0

¿Es posible inspeccionar esa "configuración/demolición" con más detalle? Consulte la siguiente pregunta relacionada: https://stackoverflow.com/questions/44920375/sql-server-profiler-how-to-inspect-understand-the-duration-for-the-audit-logout – Stefan

2

También vale la pena mencionar como en this answer que el Inicio/cierre de sesión de auditoría puede significar que la conexión se está reutilizando/devolviendo al grupo de conexiones.

3

La clase de evento de cierre de sesión de auditoría indica que un usuario ha cerrado sesión (cerró sesión) Microsoft SQL Server. Los eventos de esta clase se activan mediante conexiones nuevas o conexiones que se reutilizan desde un grupo de conexiones.

es el tiempo total que se conectó la conexión, incluido el tiempo de inactividad, por lo que no indica un problema de rendimiento. También es muy poco probable que crear perfiles de inicio de sesión/cierre de sesión cause un problema de rendimiento. Sería mejor buscar consultas de bajo rendimiento, posiblemente consultas de larga ejecución.

Para obtener más información le sugiero https://msdn.microsoft.com/en-us/library/ms175827.aspx :)

+0

¿Está seguro de que los eventos de cierre de sesión de auditoría se disparan cuando las conexiones se reutilizan desde un grupo de conexiones? Pensé que las agrupaciones de conexiones eran un ejemplo de una razón por la que podría ver altas duraciones de sesión de auditoría, porque la conexión está abierta pero inactiva durante la mayor parte de su vida, –