sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo generar un plan de ejecución en SQL Server

Los planes de ejecución de consultas SQL se generan cuando un optimizador de consultas determina la forma más eficiente de entregar los datos solicitados por una consulta. Estos planes son una representación de las operaciones de la base de datos que ejecuta una consulta, que muestran qué objetos utiliza la consulta, los tipos de usos y cómo se utilizan.

Es bien sabido que las consultas de bajo rendimiento son un indicador clave de que algo anda mal en una base de datos. Por lo tanto, mirar "debajo del capó" del plan de ejecución de una consulta es una de las mejores formas de determinar la causa del problema de rendimiento.

La información disponible en un plan de ejecución de SQL es invaluable para los administradores de bases de datos que solucionan los problemas de rendimiento de las consultas de SQL Server porque les permite llegar a la raíz del problema y ajustar la consulta según sea necesario.

Examinar los planes de ejecución de SQL es uno de los primeros pasos en el ajuste del rendimiento porque el plan destaca claramente las fuentes más probables de problemas dentro de una consulta, incluidos los operadores costosos, una cantidad inusual de registros que fluyen entre los operadores y operadores adicionales.

Los DBA también se benefician de las advertencias del plan de ejecución que alertan a los usuarios sobre problemas como derrames de tempdb e índices faltantes.

Tipos de planes de ejecución de SQL

Hay dos tipos principales de planes de ejecución de SQL:planes de ejecución estimados y planes de estimación reales.

Los planes de ejecución estimados se describen mejor como una especie de pronóstico del tiempo. Como su nombre lo indica, los planes de ejecución estimados usan cálculos aproximados, estadísticas y otros parámetros para estimar los pasos que el motor de SQL Server puede seguir para ejecutar la consulta enviada después de analizarla.

No necesita ejecutar la consulta para generar este tipo de plan de ejecución, por lo que es bueno para consultas complejas para las que generar un plan de ejecución real llevaría mucho tiempo.

Los planes de ejecución reales ejecutan la consulta enviada y luego muestran los pasos que ocurrieron durante la ejecución. Este tipo de plan muestra cálculos reales y los pasos reales (no estimados) seguidos por el motor de SQL Server.

Debido a que este tipo de plan de ejecución en realidad ejecuta la consulta, es una buena opción para solucionar problemas de rendimiento de consultas.

Cómo generar un plan de ejecución de SQL

Hackernoon proporciona una descripción sucinta de cómo generar planes de ejecución estimados y reales. El proceso se puede resumir en los siguientes pasos:

Generar un plan de ejecución estimado

  • Ir a la base de datos
  • Resalte la consulta
  • Haga clic en "Consulta"
  • Haga clic en "Mostrar plan de ejecución estimado" o use el atajo Ctrl + L

Generar un plan de ejecución real

  • Ir a la base de datos
  • Resalte la consulta
  • Haga clic en "Consulta"
  • Haga clic en "Incluir plan de ejecución real" o use el atajo Ctrl + M

Encontrará una explicación detallada de cómo generar planes de ejecución estimados y planes de ejecución reales en la documentación oficial de Microsoft.

Por qué los planes de ejecución de SQL estimados y reales pueden ser diferentes

En general, los planes de ejecución estimados y reales serán similares. Sin embargo, hay ocasiones en que son diferentes. Esto es normal y ocurre porque las estadísticas de la base de datos y los datos reales son diferentes. Estas diferencias pueden introducirse a través de varios canales:

Paralelismo

El costo del plan puede hacer que se creen dos planes de ejecución para una consulta enviada. El motor de SQL Server elegirá si usar o no el plan paralelo, por lo que es posible que un plan use el plan paralelo y el otro use el plan en serie.

Estadísticas obsoletas

Cuando inserta y elimina datos de tablas e índices o modifica la tabla o el esquema del índice, las estadísticas cambiarán. Si las estadísticas no se actualizan periódicamente, el plan de ejecución real será diferente del plan de ejecución estimado.

Plan estimado no válido

Si una consulta contiene una declaración que requiere una tabla temporal que solo existe si se ejecuta la consulta, generar un plan de ejecución estimado generará un error porque no se ha ejecutado ninguna consulta. La misma consulta funcionaría bien en el plan de ejecución real porque la consulta se ejecutó.

Los planes de ejecución de SQL son un recurso valioso para solucionar problemas de rendimiento de SQL Server. Saber cómo generar planes de ejecución de SQL estimados y reales es una herramienta esencial para cualquier DBA encargado de ajustar las consultas para un rendimiento óptimo.