Herramientas

Medir el tiempo de ejecución en SQL Server

Saber el tiempo necesario para realizar una tarea es clave a la hora de optimizar un proceso. Siendo la mejor estrategia centrarse en mejorar el rendimiento de aquellas actividades que requieren más tiempo, ya que estas son las que más van a afectar al resultado final. Algo que también se aplica a las bases de datos. Por lo que, conocer el tiempo de ejecución en SQL Server de las consultas realizadas es algo que puede ser de gran ayuda a la hora de mejorar nuestros procesos de análisis.

Obtener el tiempo de ejecución en SQL Server

En SQL Server existe la opción de activar un modo en el que se muestra el tiempo en milisegundos necesarios para analizar, compilar y ejecutar las diferentes consultas que se ejecuten. Al activar este modo la información del tiempo se agrega en los mensajes que devuelve el motor de base de datos. Modo que se puede activar con la instrucción SET STATISTICS TIME ON. Una vez que se ha obtenido la información necesaria este modo se puede desactivar con el comando SET STATISTICS TIME OFF

Por ejemplo, ejecutando el siguiente código se puede ver el tiempo que tarda cada una de las consultas diferentes sobre una misma tabla.

set statistics time on 

SELECT first_name, last_name, email, total_billing FROM clients WHERE total_billing > 5000;

SELECT first_name, last_name, email, total_billing FROM clients WHERE shirt_size = 'XL';

set statistics time off
Tiempo de análisis y compilación de SQL Server: 
   Tiempo de CPU = 0 ms, tiempo transcurrido = 0 ms.

(490 rows affected)

 Tiempos de ejecución de SQL Server:
   Tiempo de CPU = 0 ms, tiempo transcurrido = 119 ms.
Tiempo de análisis y compilación de SQL Server: 
   Tiempo de CPU = 0 ms, tiempo transcurrido = 0 ms.

(151 rows affected)

 Tiempos de ejecución de SQL Server:
   Tiempo de CPU = 0 ms, tiempo transcurrido = 85 ms.

En base a los resultados se puede ver como la primera consulta (119 ms) es más lenta que la segunda (85 ms). Aunque, dado que ambas son operaciones extremadamente simples sobre una tabla sencilla, la diferencia entre ambas es prácticamente despreciable.

Medir la actividad de disco en SQL Server

Otra opción que se puede activar en SQL Server es la medición de la actividad de disco a la hora de realizar una consulta. Al igual que el caso anterior, este es un modo que se puede activar ejecutando una instrucción. En concreto para su activación se debe ejecutar SET STATISTICS IO ON y para la desactivación SET STATISTICS IO OFF. Un modo que se puede aplicar sobre las consultas del ejemplo anterior.

set statistics io on 

SELECT first_name, last_name, email, total_billing FROM clients WHERE total_billing > 5000;

SELECT first_name, last_name, email, total_billing FROM clients WHERE shirt_size = 'XL';

set statistics io off 
(490 rows affected)
Tabla "clients". Número de examen 1, lecturas lógicas 18, lecturas físicas 0, lecturas de servidor de páginas 0, lecturas anticipadas 0, lecturas anticipadas de servidor de páginas 0, lecturas lógicas de línea de negocio 0, lecturas físicas de línea de negocio 0, lecturas de servidor de páginas de línea de negocio 0, lecturas anticipadas de línea de negocio 0, lecturas anticipadas de servidor de páginas de línea de negocio 0.

(151 rows affected)
Tabla "clients". Número de examen 1, lecturas lógicas 18, lecturas físicas 0, lecturas de servidor de páginas 0, lecturas anticipadas 0, lecturas anticipadas de servidor de páginas 0, lecturas lógicas de línea de negocio 0, lecturas físicas de línea de negocio 0, lecturas de servidor de páginas de línea de negocio 0, lecturas anticipadas de línea de negocio 0, lecturas anticipadas de servidor de páginas de línea de negocio 0.

En este caso se puede ver que en ambos casos se realiza el mismo número de lecturas en ambos casos, ya que se obtiene la información de la misma tabla, pero con diferentes condiciones. Siendo en ambos casos todas las lecturas son lógicas, datos leídos desde la caché, y ninguna física, datos leídos desde el disco.

Conclusiones

A la hora de depurar procesos en bases de datos saber cuál es el tiempo de ejecución y los recursos necesarios de una consulta es algo clave. Para eso conocer las opciones que ofrece una base de datos como SQL Server para medir el tiempo y la actividad de disco es algo que puede ser de mucha ayuda en nuestro trabajo.

Imagen de anncapictures en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Por Qué las Contraseñas Largas son más Seguras que las Complejas

"Tu contraseña debe tener al menos 8 caracteres, una mayúscula, un número y un símbolo…

8 horas ago

Gini, KS y AUC: Cómo Medir la Calidad de un Modelo de Credit Scoring

Cuando un analista de riesgo presenta un nuevo scorecard ante el comité de dirección, la…

2 días ago

Curiosidad: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

1 semana ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

1 semana ago

Errores habituales al trabajar con DataFrames grandes en Pandas (y cómo evitarlos)

Hay un momento muy concreto en la vida de casi todo análisis: el código que…

2 semanas ago

Champion vs Challenger: Cómo los Bancos Validan Modelos Nuevos antes de Ponerlos en Producción

Has construido un nuevo modelo de credit scoring. Las métricas de validación son mejores que…

2 semanas ago

This website uses cookies.