Diferencias entre los planes de ejecución estimados y reales.

8

Soy nuevo en SQL Server y quiero ajustar mi primera consulta.

En SQL Server 20xx, ¿cuál es la diferencia entre "mostrar plan de ejecución estimado" e "incluir plan de ejecución real"?


fuente

Respuestas:

6

El plan de ejecución estimado se genera basándose únicamente en las estadísticas que tiene SQL Server, sin ejecutar realmente la consulta. El optimizador de consultas solo se le preguntó lo que sería más probable ver con esta consulta, sobre la base de toda la información que tiene sobre la consulta y las distribuciones de datos, etc.

Esto funciona bien, la consulta no necesita ejecutarse (lo que podría llevar mucho tiempo), pero si las estadísticas no están actualizadas, el plan podría estar severamente sesgado.

El plan de ejecución real es solo eso: el plan de ejecución real que se utilizó al ejecutar la consulta. Esto le mostrará cosas que pueden sugerir estadísticas "desactualizadas", etc. Pero para obtener esto, debe ejecutar la consulta, lo que puede llevar mucho tiempo.

marc_s
fuente
1
Pensé que la única pregunta real aquí es en qué casos el plan real no es el estimado. El resto es obvio, ¿no?
John
Una pregunta rápida después de pasar por el optimizador de consultas y la ejecución de la consulta, si el plan en caché está desactualizado, ¿el paso de optimización de la consulta volverá a ejecutar las estadísticas de actualización? ¿O hay otra forma de generar un plan de ejecución?
brykneval
1

El plan estimado le proporcionará cómo se ejecutará su consulta en el servidor sin ejecutarla realmente. Esto le dará idea si necesita ajustar para crear un mejor plan o si el plan estimado se ve bien.

El plan real muestra lo que realmente sucedió cuando el servidor ejecutó la consulta. Incluye detalles como el número real de filas de una tabla, la cantidad de memoria que usó si hubo una clasificación y el grado de paralelismo que utilizó durante la ejecución.

Pero lo mejor sería mirar la diferencia entre "número estimado de filas" y "número real de filas" que puede ver en el plan ejecutivo real. Más cerca de estos dos valores significa que las estadísticas están actualizadas y para las estadísticas dadas este es el mejor plan. Pero si estos valores tienen muchas diferencias, entonces podría ser posible que las estadísticas no estén actualizadas y, por lo tanto, esto podría no ser el mejor plan En este caso, actualizar las estadísticas ayudará a generar un mejor plan estimado y, por lo tanto, un plan real.

Gulli Meel
fuente