Mostrando entradas con la etiqueta planes de ejecución. Mostrar todas las entradas
Mostrando entradas con la etiqueta planes de ejecución. Mostrar todas las entradas

sábado, 4 de marzo de 2017

SQL Server: Interpretar planes de ejecución gráficos para consultas básicas

Vamos a tratar de explicar cómo interpretar planes de ejecución gráficos básicos, es decir, planes de ejecución para sentencias del tipo SELECT, UPDATE, INSERT Y DELETE, con sólo unos pocos JOINS y si no hay funciones avanzadas o indirectas. 

Los planes gráficos están basados en iconos, y el número de iconos a aprender es mínimo. Cada icono representa un operador específico dentro de la ejecución del plan. Se va a utilizar el término "icono" y "operador" de forma intercambiable.

Hay 78 operadores disponibles. Afortunadamente, no es necesario memorizar todos antes de que podamos leer un plan de ejecución gráfico. La mayoría de las consultas utilizan sólo un pequeño subconjunto de operadores, y nos centraremos en los principales. Si vemos un icono desconocido, se puede encontrar más información al respecto en los libros en pantalla. .

Un plan de ejecución gráfico muestra cuatro tipos distintos de operadores:

• Los operadores lógicos y físicos, también llamados iteradores, aparecen como iconos azules y representan la ejecución de consultas u operaciones DML.

• Operadores de paralelismo físico son también iconos azules y representan operaciones de paralelismo. Son un subconjunto de los operadores lógicos y físicos, pero conllevan un nivel completamente diferente de análisis en el plan de ejecución.

• Operadores de cursor, tienen iconos de color amarillo y representan operaciones de cursor de SQL.

• Elementos del lenguaje son iconos verdes y representan elementos del lenguaje SQL, como ASSIGN, DECLARE, IF, SELECT (RESULT), WHILE.

Nos centraremos principalmente en los operadores lógicos y físicos, incluyendo algunos operadores de paralelismo físico. Algunos textos enumeran en orden alfabético todos los operadores, pero esta no es la forma más fácil de aprenderlos, aquí nos centraremos en los iconos más comunes.

Podemos aprender mucho de cómo trabajan los operadores observando la forma en que operan dentro de los planes de ejecución. La clave, es aprender a utilizar las propiedades de cada uno de los operadores y profundizar en ellas. Cada operador, tiene un conjunto diferente de características. Algunos operadores, principalmente Sort, Hash Match (Aggregate) y Hash Join requieren una cantidad variable de memoria para ejecutarse. Una consulta con uno de estos operadores puede tener un tiempo de retardo antes de su ejecución, pudiendo afectar negativamente al rendimiento. A continuación, se muestra una lista de los operadores.

SQL Server: Interpretar planes de ejecución gráficos para consultas básicas

sábado, 5 de noviembre de 2016

Planes de ejecución con SQL Server V, planes de ejecución en XML

Trabajar con los planes de ejecución XML


El almacenamiento de los planes en XML abre varias posibilidades. En primer lugar, es muy fácil hacer una copia de un plan para compartirlo. Esta es la verdadera fuerza de tener a nuestra disposición XML para los planes de ejecución, podemos usar el lenguaje XQuery para ejecutar consultas directamente contra el plan de ejecución y en los planes en la caché.

Obtención de los planes reales y estimados en XML 


Con el fin de convertir a XML el plan estimado se puede activar o desactivar con:

SET SHOWPLAN_XML ON
...
SET SHOWPLAN_XML OFF

El comando SHOWPLAN_XML no es una instrucción esencialmente una vez se activa estos parámetros al ejecutar una sentencia SQL en lugar de ejecutarla recoge información del plan de ejecución en forma de documento XML. Una vez más, es importante poner SHOWPLAN_XML a OFF tan pronto como se haya terminado de recoger la información del plan, para permitir que las instrucciones SQL se ejecuten según lo previsto.

Para ver la versión XML del plan real:

SET ON STATISTICS XML
...
SET OFF STATISTICS XML

Una vez más, vamos a ver el mismo plan de ejecución como se evaluó con el plan de texto.

SET SHOWPLAN_XML ON;
GO
SELECT *
FROM [dbo] [NombreTabla].;
SET SHOWPLAN_XML OFF;
GO


Esta instrucción mostrará algo parecido a esto


planes de ejecución en XML