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

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…

2 días ago

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

En la serie Creación de una API REST con Express y TypeScript construimos una API…

4 días ago

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…

1 semana ago

Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows

En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…

2 semanas ago

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

2 semanas ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

3 semanas ago

This website uses cookies.