2010-12-01 10 views
7

alt textHaciendo sentido de que el número de lecturas/escrituras en SQL

Ver las sentencias SQL que se indican en esta vista del Analizador de SQL. Todos estos eventos provienen de una máquina cliente que está ocupada con un proceso de larga ejecución, trabajando en un par de miles de filas. Cada procesamiento de una fila demora aproximadamente 6.5 segundos, que es lo que muestra el Analizador de SQL como el tiempo entre el cierre de la sesión, aunque la declaración de actualización real solo tome 1ms. Cada inicio de sesión/cierre de sesión utiliza el mismo SPID. Obsérvese que entre cualquier evento de inicio de sesión y cierre de sesión, las declaraciones SQL indican un conteo de lecturas de 17 y un conteo de escrituras de 0. Sin embargo, el evento Cerrar sesión indica un recuento total de lecturas superior a 2 millones y un recuento de escrituras superior a 10k. ¿Qué eventos necesito para perfilar para tratar de descubrir qué enunciado está causando esas lecturas/escrituras, porque sospecho que esas son las que causan la demora de 6,5 segundos, pero no puedo ver que ocurran?

+1

No estás usando un cursor, ¿o sí? –

+0

no. Se han agregado los eventos de cursor en SQL Profiler para confirmar que ninguno de ellos se está iniciando. –

Respuesta

7

Las cifras de Lectura/Escritura proporcionadas para el evento Auditoría: Cerrar sesión son los totales acumulados durante la duración de esa conexión. En sí mismo, los valores no le dicen ningún detalle: si ejecuta 10 comandos durante la vida útil de una conexión, verá las cifras totales para los 10 comandos dentro de esa sesión.

Para saber cuál fue el desglose por instrucción, debe ver los eventos SQL: BatchCompleted (o SQL: StmtCompleted) que se registran para ese mismo SPID entre el Audit de inicio: Inicio de sesión y Fin Auditoría: Cerrar sesión evento.

Actualización: En cuanto a la imagen, lo que se ve un poco extraño (al menos para mí), es que después de cada auditoría: Salir, el Reads valor no se restablece, y así cada vez que está siendo incrementado por el número de lecturas para la declaración que se está ejecutando (17). No estoy seguro al 100%, por lo tanto, en qué punto se restablecerá esa cifra, pero el punto básico es que la cifra es acumulativa y podría haberse acumulado a lo largo del tiempo/una serie de declaraciones, por lo que no significa necesariamente que consulta golpeando el servidor!

Sospecho que las cifras de Lectura/Escritura de la Auditoría: Logout se comportan acumulativamente como se indica arriba. Pero la duración se trueca esa tendencia. Parece que la duración no es acumulativa. Algunas descripciones de MSDN:

Duración: Cantidad de tiempo ya que el usuario conectado (aproximadamente).
lecturas: Número de E/S de lectura lógica emitidas por el usuario durante la conexión.
Escrituras: Número de E/S de escritura lógica emitidas por el usuario durante la conexión .

+0

Parece que la columna Duración es la única que se restablece desde el último cierre de sesión. Las lecturas/escrituras son de hecho acumulativas en el SPID. Así que estoy menos asustado por el hecho de que hay tantos ... ¡todavía tengo que tratar de descubrir cuál es la causa de la duración de 6.5 segundos cuando la declaración real es de solo 1 ms! –

+0

@Shawn: no se puede ver la precisión completa de StartTime en la captura de pantalla, pero parece casi como si la Duración mostrada fuera el tiempo de una Auditoría: Cerrar sesión a la siguiente. Quizás es por eso que está documentado como "aproximadamente". No creo que sea algo de lo que preocuparse. – AdaTheDev

Cuestiones relacionadas