Saltear al contenido principal

Medir la lectura en SQL Server – Parte 1

Durante nuestra fase de pruebas en Bases de Datos que describimos en la publicación “Cómo hacer Testing en SQL Server“, hemos mencionado la importancia de las mediciones y de las pruebas de estrés y concurrencia. Ahora bien, veamos aquí particularmente cómo medir la lectura en SQL Server por cada una de las consultas que le hacemos.

¿Dónde empezamos?

Necesitamos empezar con un concepto vital para entender las mediciones.

Las Páginas en SQL Server

La unidad mínima de representación de datos. El átomo de nuestra información.

Las páginas de nuestro motor se encuentran agrupadas en bloques de 8 KB que tienen la información primaria de una página, vale decir, su cabecera, identificadores, relaciones y, el contenido como tal que pueden ser datos o índices. (Si deseas ver mucho más detalle de este punto puedes visitar la Guía de arquitectura de páginas y extensiones)

Esta unidad representará el esfuerzo de lectura que tiene una consulta en función a las métricas que nos proporciona la configuración de ejecución denominada Set Statistics lo.

¿Cómo habilito esta configuración y qué obtengo?

No es nada más sencillo que ejecutar la consulta con una primera línea habilitando la captura de estas métricas.

SET STATISTICS IO ON

medir-la-lectura-en-sql-server

Como puedes ver, prefiero desactivar la configuración concluida la consulta que queremos evaluar, esto con el fin de evitar tener en la salida (Messages) de la ejecución, datos innecesarios fuera del código que deseo medir.

El resultado importante aquí es todo aquello que nos muestra la pestaña de Messages y nuestro valor estrella, los “logical reads“.

¿Qué son los Logical Reads?

Su definición nos dice que este valor nos muestra la cantidad de páginas que son leídas desde el caché de datos. Que no te confunda esto, al final, todos los datos leídos en SQL Server van al caché de datos, ¿verdad? Por eso es nuestro valor principal a medir.

  • En el caso del ejemplo tenemos 184 logical reads.
  • Logical Read = Número de Páginas
  • 1 página = 8 KB
  • 184 páginas = 1472 KB

¡Perfecto! Hasta aquí ya conocemos la cantidad de lectura que realiza esta consulta.

¿Cómo nos iría con una consulta más complicada?

Vamos con una vista

Esta vista recorre diferentes tablas entonces si revisamos los Messages veremos también el detalle de cada una en cantidad de lectura.

Finalmente, ¿qué ganamos al medir la lectura en SQL Server?

Con esto sabemos el esfuerzo del recorrido de páginas de cada tabla. Claro que es información valiosa. Podemos determinar qué tabla o tablas tienen un mayor uso de lectura y tener una idea inicial de cuáles de ellas pueden ayudarnos a identificar la aplicación de una mejora en diseño.

Es un gran punto de partida para tareas de Performance Tuning. Sin embargo no debes olvidar que muchas veces tenemos resultados diferentes entre ambientes de Desarrollo y Producción y también debemos evaluarlo. Revisar si nuestros índices ayudan a reducir la cantidad de lectura validando que realmente estén siendo utilizados.

¿Quieres saber más? Mira la segunda parte de este artículo.

Mientras más conocemos sobre el comportamiento de nuestro servidor, mejor será nuestro entendimiento de cómo debemos reaccionar ante diferentes eventos. Te ayudamos en esto en las diferentes webinars que realizamos, si quieres recibir las invitaciones a ellas en nuestro Boletín Semanal de Noticias, regístrate en este enlace.

Pablo Javier Fernández

www.datoptim.com
I love working on SQL Server Performance Tuning and finding the origin of the problems. Music and SQL Server passionate.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Close search

Carrito

Volver arriba