Articulo de referencia

Plan de consulta

Un plan de consulta (o plan de ejecución de consulta ) es una secuencia de pasos que se utiliza para acceder a los datos en un sistema de gestión de bases de datos relacionales ...

Un plan de consulta (o plan de ejecución de consulta ) es una secuencia de pasos que se utiliza para acceder a los datos en un sistema de gestión de bases de datos relacionales SQL . Este es un caso específico del concepto de planes de acceso del modelo relacional .

Dado que SQL es declarativo , existen muchas maneras alternativas de ejecutar una consulta, con un rendimiento muy variable. Cuando se envía una consulta a la base de datos, el optimizador evalúa algunos de los diferentes planes correctos para ejecutarla y devuelve la opción que considera la mejor. Debido a que los optimizadores de consultas no son perfectos, los usuarios y administradores de bases de datos a veces necesitan examinar y ajustar manualmente los planes generados por el optimizador para obtener un mejor rendimiento.

Generación de planes de consulta

Un sistema de gestión de bases de datos (DBMS) puede ofrecer uno o más mecanismos para obtener el plan de ejecución de una consulta. Algunos paquetes incluyen herramientas que generan una representación gráfica del plan de consulta. Otras herramientas permiten configurar un modo especial en la conexión para que el DBMS devuelva una descripción textual del plan. Otro mecanismo para recuperar el plan de consulta consiste en consultar una tabla virtual de la base de datos tras ejecutar la consulta que se desea examinar. En Oracle, por ejemplo, esto se puede lograr mediante la instrucción EXPLAIN PLAN.

Planes gráficos

Microsoft SQL Server Management Studio muestra un plan de consulta de ejemplo.

La herramienta Microsoft SQL Server Management Studio , que viene incluida con Microsoft SQL Server , por ejemplo, muestra este plan gráfico al ejecutar este ejemplo de unión de dos tablas en una base de datos de ejemplo incluida:

SELECCIONAR * DE HumanResources.Employee AS e INNER JOIN Person.Contact AS c ON e.ContactID = c.ContactID ORDER BY c.LastName

La interfaz de usuario permite explorar diversos atributos de los operadores que intervienen en el plan de consulta, como el tipo de operador, el número de filas que consume o produce cada operador y el coste previsto del trabajo de cada operador.

Planes textuales

El plan textual proporcionado para la misma consulta que en la captura de pantalla se muestra aquí:

Texto de la declaración----| --Ordenar(ORDENAR POR:([c].[Apellido] ASC))| --Bucles anidados(Unión interna, REFERENCIAS EXTERNAS:([e].[ContactID], [Expr1004]) CON PRECARGA NO ORDENADA)| --Escaneo de índice agrupado(OBJETO:([AdventureWorks].[HumanResources].[Employee].[PK_Employee_EmployeeID] AS [e]))| --Índice agrupado Buscar(OBJETO:([AdventureWorks].[Persona].[Contacto].[PK_Contacto_IDContacto] AS [c]),BUSCAR :( [ c ] . [ ContactID ]=[ AdventureWorks ] . [ HumanResources ] . [ Employee ] . [ ContactID ] como [ e ] . [ ContactID ] ) ORDENADO HACIA ADELANTE )

Esto indica que el motor de consultas realizará un escaneo del índice de clave primaria en la tabla Employee y una búsqueda coincidente en el índice de clave primaria (la columna ContactID) de la tabla Contact para encontrar filas coincidentes. Las filas resultantes de cada lado se mostrarán a un operador de unión de bucles anidados, se ordenarán y luego se devolverán como conjunto de resultados a la conexión.

Para optimizar la consulta, el usuario debe comprender los diferentes operadores que puede utilizar la base de datos y cuáles pueden ser más eficientes que otros, sin dejar de proporcionar resultados de consulta semánticamente correctos.

Optimización de bases de datos

Revisar el plan de consulta puede brindar oportunidades para crear nuevos índices o modificar los existentes. También puede mostrar que la base de datos no está aprovechando adecuadamente los índices existentes (consulte el optimizador de consultas ).

Optimización de consultas

Un optimizador de consultas no siempre elige el plan de consulta más eficiente para una consulta dada. En algunas bases de datos, se puede revisar el plan de consulta, detectar problemas y, a continuación, el optimizador ofrece sugerencias para mejorarlo. En otras bases de datos, se pueden probar alternativas para expresar la misma consulta (otras consultas que devuelven los mismos resultados). Algunas herramientas de consulta pueden generar sugerencias integradas en la consulta, que el optimizador puede utilizar.

Algunas bases de datos, como Oracle, proporcionan una tabla de planes para la optimización de consultas. Esta tabla de planes devuelve el costo y el tiempo de ejecución de una consulta. Oracle ofrece dos enfoques de optimización:

  1. CBO u Optimización Basada en Costes
  2. RBO u Optimización Basada en Reglas

La optimización basada en reglas (RBO) está quedando obsoleta gradualmente. Para utilizar la optimización basada en costos (CBO), es necesario analizar todas las tablas a las que hace referencia la consulta. Para analizar una tabla, un administrador de bases de datos (DBA) puede ejecutar código del paquete DBMS_STATS.

Otras herramientas para la optimización de consultas incluyen:

  1. Rastreo SQL [ 1 ]
  2. Rastreo de Oracle y TKPROF [ 2 ]
  3. Plan de ejecución de Microsoft SMS (SQL) [ 3 ]
  4. Grabación de rendimiento de Tableau (todas las bases de datos) [ 4 ]

Referencias

  1. "SQL Trace" . Microsoft.com . Microsoft . Consultado el 30 de marzo de 2020 .
  2. "Uso de SQL Trace y TKPROF" . Oracle.com . Consultado el 30 de marzo de 2020 .
  3. "Planes de ejecución" . Microsoft.com . Microsoft . Consultado el 30 de marzo de 2020 .
  4. "Optimizar el rendimiento del libro de trabajo" . Tableau.com . Tableau Inc. Consultado el 30 de marzo de 2020 .