sqlserver query sql performance count statistics database-scan

query - statistics io on sql server



sql statistics io scan contar explicación (5)

Pregunta simple, pero no he encontrado una buena explicación en google. Al utilizar Establecer estadísticas IO ENCENDIDO, las lecturas lógicas y el conteo de escaneos se proporcionan en la ventana de mensajes de Management Studio. Si tengo:

tblExample, número de escaneo 5, lecturas lógicas 20

¿Qué significa el conteo de escaneo?


De libros en línea

Número de escaneos : Número de escaneos de índice o tabla realizados.

lecturas lógicas: número de páginas leídas de la memoria caché de datos.

lecturas físicas: número de páginas leídas del disco.

lecturas de lectura anticipada: cantidad de páginas colocadas en el caché para la consulta.

Vea también aquí: http://technet.microsoft.com/en-us/library/ms184361.aspx


En cuanto a lo que significa una "exploración de tabla", lo mejor que pude encontrar es esto:

El recuento de escaneos simplemente significa cuántas veces se accedió a la tabla o índice durante la consulta. Puede ser un escaneo completo, escaneo parcial, o simplemente una búsqueda.

En otras palabras, el recuento de escaneo solo no es suficiente para continuar. Necesitas saber exactamente cuáles fueron esos escaneos, por lo que tendrás que mirar el plan de ejecución real para obtener más detalles. ¡En resumen, no es una métrica muy útil en sí misma!

Adicionalmente:

http://www.eggheadcafe.com/software/aspnet/32171165/set-statistics-io-scan-count-explanation.aspx

Desafortunadamente, Scan Count estos días no es muy informativo . Hm, bueno, si ves un número como 19223, probablemente se haya accedido a la tabla a través de un bucle anidado muchas veces.

Hubo un momento en que "recuento de escaneos" simplemente significaba "tabla de tiempos accedida", pero eso fue hace mucho tiempo, tal vez en SQL 6.5. La única vez que puede obtener un conteo de escaneo con esa definición de 0 es con una consulta como ...

select * from TestA1 where CompanyID = 1 and CompanyID = 2

... donde SQL Server podría concluir que la consulta no devolverá ninguna fila, sin acceder a la tabla.


Si continuar recopilando citas de msdn. Entonces [1] que se repite en [2]:

  • " Lecturas lógicas
    Este valor indica la cantidad total de accesos de página necesarios para procesar la consulta. Cada página se lee de la memoria caché de datos, independientemente de si fue necesario llevar esa página del disco a la memoria caché para cualquier lectura determinada . Este valor siempre es al menos tan grande y generalmente más grande que el valor de las lecturas físicas. La misma página se puede leer muchas veces (por ejemplo, cuando una consulta se dirige desde un índice), por lo que el recuento de lecturas lógicas para una tabla puede ser mayor que el número de páginas en una tabla.

  • Lectura física
    Este valor indica el número de páginas que se leyeron desde el disco; siempre es menor o igual que el valor de las Lecturas lógicas. El valor de la Proporción de aciertos de caché de búfer, tal como se muestra en el Monitor de rendimiento, se calcula a partir de los valores de Lecturas lógicas y Lecturas físicas de la siguiente manera:

  • Leer por adelantado Lee
    El valor Leer antes de las lecturas indica el número de páginas que se leyeron en la memoria caché mediante el mecanismo de lectura anticipada mientras se procesaba la consulta. Estas páginas no son necesariamente utilizadas por la consulta. Si finalmente se necesita una página, se cuenta una lectura lógica, pero no una lectura física. Un valor alto significa que el valor de las lecturas físicas es probablemente menor y la proporción de aciertos de caché es probablemente más alta que ... [truncada por vgv8]

  • Cuenta de escaneo
    El valor del conteo de escaneo indica el número de veces que se accedió a la tabla correspondiente. Las tablas externas de una combinación de bucle anidado tienen un conteo de escaneo de 1. Para las tablas internas, el recuento de escaneo puede ser el número de veces que se accedió a la mesa a través del ciclo. El número de lecturas lógicas viene determinado por la suma del número de escaneos multiplicado por el número de páginas a las que se accede en cada escaneo. Sin embargo, incluso para uniones anidadas de bucle, el recuento de escaneos para la tabla interna podría aparecer como 1. SQL Server podría copiar las filas necesarias de la tabla interna en una tabla de trabajo en caché y usar esta tabla de trabajo para acceder a las filas de datos reales. Cuando se usa este paso en el plan, a menudo no hay indicios de ello en la salida STATISTICS IO. Debe usar el resultado de TIEMPO ESTADÍSTICO, así como información sobre el plan de procesamiento real utilizado, para determinar el trabajo real involucrado en la ejecución de una consulta. Las uniones Hash y las uniones de fusión generalmente muestran el recuento de escaneo como 1 para ambas tablas involucradas en la unión, pero este tipo de combinaciones puede involucrar sustancialmente más memoria. Puede inspeccionar el valor de memusage en sysprocesses mientras se ejecuta la consulta, pero a diferencia del valor de physical_io, este no es un contador acumulativo y solo es válido para la consulta actualmente en ejecución. Una vez que finaliza una consulta, no hay forma de ver cuánta memoria usó ".

[1]
Capítulo 4. Solución de problemas de rendimiento de la consulta. Supervisión del rendimiento de las consultas
Dentro de Microsoft® SQL Server ™ 2005 : optimización y optimización de consultas
por Kalen Delaney

Editorial: Microsoft Press
Fecha del pub: 26 de septiembre de 2007
Imprimir ISBN-10: 0-7356-2196-9
Imprimir ISBN-13: 978-0-7356-2196-1
Páginas: 448

[2]
Supervisión del rendimiento de las consultas
Optimizar el rendimiento de las consultas
Por Ron Soukup, Kalen Delaney
Capítulo 14 de Inside Microsoft SQL Server 7.0, publicado por Microsoft Press
http://technet.microsoft.com/en-us/library/cc917719.aspx#ECAA