Como administrador de bases de datos o desarrollador de SQL Server, es importante tener la habilidad de comprender y analizar los planes de ejecución. Un plan de ejecución proporciona información valiosa sobre el costo estimado de una consulta, los índices utilizados y las operaciones realizadas. Esta información es crucial para optimizar el rendimiento de las consultas que se ejecutan lentamente.
En este artículo, exploraremos el concepto de los planes de ejecución y discutiremos las diferencias entre los planes estimados y los planes reales. También aprenderemos cómo crear ambos tipos de planes de ejecución y examinaremos un plan de ejecución gráfico simple.
¿Qué es un Plan de Ejecución?
El optimizador de consultas es un componente de SQL Server que analiza la consulta y las estadísticas disponibles sobre las tablas subyacentes, los índices y las vistas indexadas. Utiliza esta información para crear diferentes planes, cada uno de los cuales representa una posible forma de devolver los resultados de la consulta. Estos planes pueden involucrar diferentes índices, tipos de uniones y operaciones en diferentes secuencias para encontrar el plan óptimo.
El optimizador asigna un costo relativo para cada operación y suma los costos para producir un costo total para cada plan. Luego selecciona el plan con el costo total más bajo para ejecutar la consulta. Es importante tener en cuenta que estos costos son valores relativos calculados por el optimizador y no se pueden comparar con valores reales como el tiempo de CPU y E/S.
Una vez que se selecciona un plan de ejecución, se almacena en la memoria caché. La próxima vez que se ejecute la consulta, el optimizador verifica la memoria caché en busca de un plan. Si se encuentra un plan, se utiliza para ejecutar la consulta, ahorrando el tiempo de crear nuevos planes estimados.
Tipos de Planes de Ejecución
Además de los planes de ejecución gráficos, también existen planes de ejecución en texto y XML. Los planes en texto son difíciles de leer y se eliminarán en una versión futura de SQL Server. Los planes de ejecución en XML se pueden guardar y abrir como planes gráficos, lo que proporciona más flexibilidad.
Planes Estimados vs. Planes Reales
Existen dos tipos de planes de ejecución: estimados y reales. El plan estimado se calcula por el optimizador de consultas antes de la ejecución y representa la creencia del optimizador sobre el plan de menor costo. Se puede devolver rápidamente al usuario. El plan real, por otro lado, muestra los pasos reales ejecutados para procesar la consulta y se devuelve después de que la consulta se completa.
Existen varias razones por las cuales los planes estimados y reales pueden diferir. Un plan estimado puede no crearse si la consulta contiene objetos que no existen. Las estadísticas obsoletas también pueden afectar la precisión de los planes estimados. SQL Server crea estadísticas en cada índice para estimar el número de filas devueltas por una operación. Si estas estadísticas están desactualizadas, los costos estimados pueden ser incorrectos.
La paralelización es otro factor que puede causar diferencias entre los planes estimados y reales. Si el servidor tiene múltiples CPUs, el optimizador puede crear diferentes planes utilizando diferentes procesadores. El plan elegido se determina en el momento de la ejecución.
¿Qué Plan es Mejor?
Se puede obtener rápidamente un plan estimado, mientras que un plan real tarda más en generarse. El plan real proporciona información más detallada, como el número real de filas devueltas por cada operación. Comparar el número estimado y real de filas puede ayudar a identificar estadísticas obsoletas.
Actualizar las estadísticas o verificar la última fecha de actualización de las estadísticas puede mejorar el rendimiento de la consulta. Se puede consultar la tabla sys.indexes para obtener la última fecha en que se actualizaron las estadísticas.
Conclusión
Comprender y analizar los planes de ejecución es una habilidad valiosa para los administradores de bases de datos y desarrolladores de SQL Server. Al examinar los planes estimados y reales, se puede optimizar el rendimiento de las consultas que se ejecutan lentamente. Los planes de ejecución gráficos proporcionan una vista detallada de las operaciones y su secuencia, lo que los convierte en una excelente herramienta de análisis.
Manténgase atento a las Partes 2 y 3 de esta serie, donde profundizaremos en los planes de ejecución gráficos y exploraremos los operadores comunes utilizados en las consultas.