sábado, 22 de octubre de 2016

Planes de ejecución con SQL Server. IV Planes de ejecución de texto

Los planes de ejecución gráficos son muy útiles porque son muy fáciles de leer. Sin embargo, gran parte de los datos de los operadores no son inmediatamente visibles, para ver el conjunto completo tenemos que echar un vistazo a la ventana de propiedades. Pero podemos ver el plan completo conplanes de ejecución de  XML.

Antes de XML se utilizaban los planes de texto, estos actualmente están es desuso pero veremos algunas instrucciones por compatibilidad. Las nuevas versiones de SQL Server sólo se proporcionarán planes de texto en formato XML.

Para ver el plan de ejecución estimado de texto, sólo hay que escribir el comando. 

SET SHOWPLAN_ALL ON;

Esta instrucción pone en modo on a SQL Server para recopilar la información de ejecución para todas las sentencias SQL posteriores, pero esas declaraciones en realidad no se han ejecutado aun. Por lo tanto, tenemos el plan estimado. Es muy importante poner  SHOWPLAN_ALL  a OFF después de que capturar la información que se necesita. Si se nos olvidamos de esto no se ejecutarán las instrucciones SQL server.

A partir de este momento cualquier sentencia que ejecutemos mostrará su plan estimado de ejecución.


Para desactivarlo basta con ejecutar el comando 

SET SHOWPLAN_ALL OFF;


Obtener el plan textual real 

Para obtener el plan de texto real ejecutamos la sentencia

SET STATISTICS PROFILE ON


A partir de este momento cualquier sentencia que ejecutemos vendrá acompañada de su plan real de ejecución.
Para desactivarlo 

SET STATISTICS PROFILE OFF

Interpretación de los planes de texto 


Cuando hemos ejecutado una select sencilla con el plan textual activa nos ha mostrado algo de este tipo.

Planes de ejecución de texto



La columna StmtText muestra los operadores. La primera fila es la SELECT presentada en la declaración. Las filas siguientes son las operaciones físicas que ocurren dentro del plan de consulta. En este caso, sólo una fila.

En un plan de texto, podemos ver fácilmente operaciones que son marcadores (flags)  de problemas de rendimiento. Es posible desplazarse entre las columnas de cada fila, es muy fácil ver por un operador y luego ver algunos de los detalles para ese operador. Pero es mucho más difícil entender el flujo ordenado de los datos de un operador al siguiente especialmente en un plan complejo.

El plan de texto muestra en columnas detalles escondidos en la información de los planes gráficos. Con SHOWPLAN_ALL obtenemos una la columna que muestra el NodeId Padre. A medida que nos desplazamos a la derecha a través del plan, se pueden ver muchas otras columnas familiares, tales como la TotalSubTreeCost, EstimateRows y así sucesivamente. Algunas de estas columnas son más difíciles de leer, pero en general la información está disponible fácilmente.

La ventaja de trabajar con un plan de texto es la capacidad de ver un operador y luego desplazarse hacia la derecha para ver los detalles de ese operador. Con los planes de texto, una vez que se dispone de toda la información en formato texto, se pueden realizar búsquedas en los datos como se haría con cualquier otro conjunto de texto, incluso guardarlo en un archivo y abrirlo en un editor.
Muchas veces es preferible trabajar con planes gráficos o de XML, pero el plan de texto tiene su utilidad.

No hay comentarios:

Publicar un comentario