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

Analytics Lane lanza ScoreFlow, un SaaS para construir y desplegar scorecards de crédito

En Analytics Lane seguimos evolucionando nuestras herramientas y damos un paso más con el lanzamiento…

4 días ago

DBSCAN y la selección de ε: teoría, intuición y aplicación práctica

Cuando hablamos de clustering, lo primero que viene a la mente suele ser k-means. Pero…

5 días ago

El bestiario de los indicadores económicos absurdos: El zoo patrio

Cualquier país desarrollado tiene sus propios indicadores folclóricos. España, por motivos que tienen mucho que…

1 semana ago

Por qué el banco te ofrece un 3% TAE y no es lo que parece

Entras a la web de tu banco. En la página principal, un banner llamativo: “Depósito…

2 semanas ago

Analytics Lane lanza la versión 1.3 del laboratorio con nuevas herramientas de evaluación de modelos y utilidades prácticas

Seguimos ampliando el laboratorio de Analytics Lane con el lanzamiento de la versión 1.3, disponible…

2 semanas ago

This website uses cookies.