Análisis simple de query en Sql Server


Normalmente la manera más simple de obtener esta información es mediante un pequeño script que genera unos resultados que podremos analizar.

Script que genera el Análisis

Sustituiremos en el actual script la query actualizar por la nuestra.

-- VACIAR CACHE DE CONTENIDOS Y DE PLANES DE EJECUCIÓN
 DBCC DROPCLEANBUFFERS
 -- DBCC FREEPROCCACHE  Don't work on SQL Azure and I use the next statement
 ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE
 GO
 -- ACTIVA LAS ESTADISTICAS
 SET STATISTICS IO ON
 SET STATISTICS TIME ON
 GO
 <strong>--QUERY A ANALIZAR</strong>
 SELECT * FROM VISTA1
 <strong>--FIN QUERY A ANALIZAR</strong>
 GO
 -- DESACTIVA LAS ESTADISTICAS
 SET STATISTICS TIME OFF
 SET STATISTICS IO OFF
 GO

Retorno del Script

Al ejecutar el script se retorna:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
SQL Server parse and compile time:
CPU time = 375 ms, elapsed time = 402 ms.

(2423 row(s) affected)
Table ‘Tabla1’. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table ‘Tabla2’. Scan count 2, logical reads 54, physical reads 3, read-ahead reads 28, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table ‘Tabla3’. Scan count 5, logical reads 45, physical reads 2, read-ahead reads 16, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table ‘Tabla4’. Scan count 6, logical reads 126, physical reads 3, read-ahead reads 20, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table ‘Tabla5’. Scan count 6, logical reads 54, physical reads 2, read-ahead reads 19, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table ‘Tabla6’. Scan count 3, logical reads 93, physical reads 4, read-ahead reads 32, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times:
CPU time = 93 ms, elapsed time = 143 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.

Interpretación del Resultado

Analicemos la información obtenida:

  • SQL Server parse and compile time: Nos indica el tiempo en compilar la query y el plan de ejecución de la misma. Este únicamente será significativo si realizamos las querys adhoc; en el caso habitual con queries similares no tendrá demasiado impacto ya que el SQL Server cacheará el resultado para las querys sucesivas.
  • Table ‘XXX’: Nos indica las tablas afectadas por la query. Es importante fijarse en el numero de physical reads; ya que los accesos a disco es la parte que implica mayor penalización en rendimiento.
  • SQL Server Execution Times: Es el tiempo a optimizar; dado que nos indica el tiempo de resolución de la query.
Anuncios
Esta entrada fue publicada en Desarrollo, Sql Server y etiquetada . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s