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

Cómo leer y analizar los planes de ejecución de SQL Server

Los planes de ejecución de SQL Server son una puerta de enlace para el optimizador de consultas y ejecuciones de consultas para profesionales de bases de datos. Revelan el procesamiento de consultas y las fases involucradas, como tablas afectadas, índices, estadísticas, tipos de uniones, la cantidad de filas afectadas, procesamiento de consultas, clasificación de datos y recuperación de datos.

En un artículo anterior, Plan de ejecución de SQL Server:¿qué es y cómo ayuda con los problemas de rendimiento? exploramos el flujo de trabajo de ejecución de consultas de alto nivel, los diferentes tipos de planes de ejecución (gráficos, XML y de texto), junto con los planes de ejecución reales y estimados.

Ahora, exploraremos las cosas que necesita saber al evaluar los planes de ejecución de SQL Server y cómo interpretar mejor la información.

Lectura de un plan de ejecución gráfico de SQL Server

Generalmente, leemos los planes de ejecución de derecha a izquierda. Comienza con el operador del plan de ejecución superior a la derecha y avanza hacia la izquierda. Le ayuda a seguir el flujo de datos lógicos en la consulta.

Suponga que ejecuta la siguiente consulta en una base de datos de muestra [AdventureWorks2019] y ve el plan de ejecución real.

SELECT TOP (10) [SalesOrderID] [SalesOrderDetailID] [CarrierTrackingNumber] [OrderQty] [ProductID] [SpecialOfferID] [ModifiedDate] FROM [AdventureWorks2019].[Sales].[SalesOrderDetail] where [UnitPrice]>1000

La consulta recupera datos de la tabla [Sales].[SalesOrderDetail] para pedidos con un precio unitario superior a 1000.

Si leemos el plan de ejecución de derecha a izquierda, notaremos lo siguiente:

  • El primer operador es el escaneo de índice agrupado que lee datos de la tabla [Sales].[SalesOrderDetail]. Cuando lleva el puntero del mouse a la flecha que conecta el Escaneo de índice agrupado y el operador Superior, devuelve el número estimado y real de filas, y el tamaño de datos estimado.

  • Pasa datos del operador Escaneo de índice agrupado al operador Superior pasa las 10 filas al operador SELECCIONAR.

Internamente, SQL Server ejecuta el plan de izquierda a derecha. Si está interesado en las órdenes físicas del operador, debe leer un plan de ejecución de izquierda a derecha. Cada operador solicita datos del siguiente operador. Por ejemplo, en el escenario anterior, el operador superior solicita datos del escaneo de índice agrupado. El análisis del índice agrupado devuelve las filas de la tabla [Ventas].[Detalle del pedido de ventas] que satisface el Dónde condición de la cláusula.

En el caso de que varias ramas se fusionen en un plan de ejecución, debe seguir el enfoque de derecha a izquierda y de arriba a abajo.

Costos del operador

Cada operador en un plan de ejecución de SQL Server está asociado con un costo. El costo del operador es relativo a otros costos en el plan de ejecución. Por lo general, debemos concentrarnos en el operador costoso y ajustar la consulta a su alrededor.

En el caso de un plan de ejecución complicado, puede ser un desafío identificar al operador costoso. En este caso, puede usar SET SHOWPLAN_ALL ON, y proporcionará información en un formato tabular.

También puede usar [Stmt text] para desglosar el plan de ejecución en cada nivel de operador y declaración.

SQL Server Management Studio (SSMS) también brinda la flexibilidad de encontrar un operador según los criterios de búsqueda. Para ello, haga clic con el botón derecho en el plan de ejecución y seleccione Buscar nodo. Esto abrirá una ventana con varias condiciones de búsqueda. Especifique su requisito y apuntará al nodo en particular, como se muestra a continuación.

Como alternativa, puede usar Azure Data Studio y navegar a Ejecutar consulta actual con plan real  en la paleta de comandos. Esto brinda un plan de ejecución real en forma compacta, junto con las operaciones principales para identificar rápidamente a los operadores costosos.

Análisis del plan de presentación

Puede identificar una estimación de cardinalidad inexacta para investigar planes de ejecución problemáticos. Esto le brindará información breve sobre cómo encontrar un operador en particular y recomendaciones en la pestaña Análisis de ShowPlan. Puede ordenar el resultado en las columnas de diferencia, real y estimada para encontrar el problema y las recomendaciones para el operador específico en el plan de ejecución. Está disponible desde SSMS 17.4.

Para hacer esto, simplemente haga clic con el botón derecho en el plan de ejecución y luego haga clic en Analizar el plan de ejecución real.

Luego, haga clic en el hipervínculo debajo de Búsqueda de detalles . Esto explicará los posibles escenarios para la inexactitud de la estimación y las soluciones para mejorar estas estimaciones. Es un buen punto de partida para los problemas de estimación de cardinalidad.

Comparar plan de presentación

Suponga que identificó un problema en el plan de ejecución e implementó una solución para remediarlo. Pero, ¿cómo comparará el plan de ejecución anterior (cómo era antes de implementar la solución) y el plan de ejecución actual? El plan de presentación de comparación de SSMS La función le brinda la flexibilidad de comparar dos planes de ejecución. Destaca las similitudes y diferencias entre estos planes.

Por lo general, los administradores de bases de datos reciben una llamada de los desarrolladores para informarles que una consulta en particular funciona bien en producción, pero lleva mucho tiempo en un entorno de control de calidad con los mismos parámetros. Otro caso de uso es migrar a una versión más nueva de SQL Server. Suponga que después de la migración, enfrenta problemas con una consulta que funciona bien en una versión de SQL inferior. También puede usar esta herramienta para comparar planes de ejecución de diferentes versiones de SQL y niveles de parches.

Guarde el plan de ejecución en un SQLPlan extensión. Después de eso, puede hacer clic derecho en otro plan de ejecución y seleccionar Comparar Showplan .

Planes de ejecución en vivo en SSMS

Puede habilitar un plan de ejecución en vivo de una consulta activa. Esto le dará estadísticas en tiempo real sobre el flujo de datos a diferentes operadores. En las estadísticas de ejecución en tiempo de ejecución, puede realizar un seguimiento del tiempo transcurrido y el número de filas. Es una característica excelente para solucionar y depurar problemas de rendimiento. Puede usar estadísticas de consultas en vivo de SQL Server 2016 y versiones posteriores.

Nota:Debe usar la última versión de SSMS. Consulte Microsoft docs para descargar la última versión de SSMS.

  • Última versión actual:SSMS 18.7.1

Para obtener estadísticas de consultas en vivo, active Incluir estadísticas de consultas en vivo. utilizando la barra de herramientas de SSMS.

También puede ver el plan de ejecución en vivo desde el Monitor de actividad . En el Monitor de actividad, seleccione el proceso deseado, haga clic con el botón derecho en él para ver el menú y elija Mostrar plan de ejecución en vivo.

Esto le brinda estimaciones de consultas en vivo junto con el flujo de datos y los porcentajes de finalización de los operadores individuales. Por lo general, esperamos a que finalice la ejecución de la consulta y vemos el plan de ejecución real. Pero supongamos que su consulta tarda más de 30 minutos en generar resultados. En este caso, puede usar estadísticas de consultas en vivo para realizar un seguimiento de los operadores individuales, el flujo de datos y señalar qué operador está tardando en completar la consulta. Por ejemplo, como se muestra a continuación, la consulta se ejecuta durante 12 minutos y 48 segundos y se estima que se completó en un 20 %. A nivel de operador, el escaneo de índice y el spool de conteo de filas están completados en un 41 %. Las líneas punteadas muestran el movimiento de datos.

Revisar el uso del plan de ejecución de SQL Server

Los planes de ejecución de SQL Server son increíblemente útiles para solucionar problemas y optimizar consultas lentas. Todo profesional de bases de datos necesita saber cómo analizar y comprender la información una vez que el plan de ejecución esté disponible. Como se mencionó anteriormente, hay varias herramientas en SSMS y Azure Data Studio para ayudarlo a revisar y resolver problemas de rendimiento; la función Comparar plan es especialmente útil cuando comienza a realizar cambios y evaluar el rendimiento.