stringtranslate.com

Plan de consulta

Un plan de consulta (o plan de ejecución de consulta ) es una secuencia de pasos que se utilizan 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 modelo relacional de planes de acceso.

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

Generando planes de consulta

Un sistema de gestión de bases de datos determinado puede ofrecer uno o más mecanismos para devolver el plan de una consulta determinada. Algunos paquetes incluyen herramientas que generan una representación gráfica de un 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 de consulta. Otro mecanismo para recuperar el plan de consulta implica consultar una tabla de base de datos virtual después de ejecutar la consulta que se va a examinar. En Oracle, por ejemplo, esto se puede lograr utilizando la sentencia EXPLAIN PLAN.

Planos gráficos

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

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

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

La interfaz de usuario permite la exploración de varios atributos de los operadores involucrados en el plan de consulta, incluido el tipo de operador, la cantidad de filas que cada operador consume o produce y el costo esperado del trabajo de cada operador.

Planes textuales

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

Texto de la instrucción---- |-- Ordenar ( ORDENAR POR : ( [ c ] . [ Apellido ] ASC ))   |-- Bucles anidados ( unión interna , referencias externas : ( [ e ] . [ ContactID ] , [ Expr1004 ] ) CON PREFETCH NO ORDENADO )         |-- Exploración de índice agrupado ( OBJETO : ( [ AdventureWorks ] . [ HumanResources ] . [ Empleado ] . [ PK_Employee_EmployeeID ] AS [ e ] ))     |-- Búsqueda de índice agrupado ( OBJETO : ( [ AdventureWorks ] . [ Persona ] . [ Contacto ] . [ PK_Contact_ContactID ] AS [ c ] ),     BUSCAR :( [ c ] . [ ContactID ]=[ AdventureWorks ] . [ HumanResources ] . [ Employee ] . [ ContactID ] como [ e ] . [ ContactID ] ) ORDENADO ADELANTE )    

Indica que el motor de consultas realizará un escaneo sobre el índice de clave principal en la tabla Employee y una búsqueda coincidente a través del índice de clave principal (la columna ContactID) en 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 el conjunto de resultados a la conexión.

Para ajustar 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 y, al mismo tiempo, proporcionar resultados de consulta semánticamente correctos.

Ajuste de la base de datos

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

Ajuste de consultas

Un optimizador de consultas no siempre elegirá el plan de consulta más eficiente para una consulta determinada. En algunas bases de datos, se puede revisar el plan de consulta, detectar problemas y, luego, el optimizador de consultas ofrece sugerencias sobre cómo mejorarlo. En otras bases de datos, se pueden probar alternativas para expresar la misma consulta (otras consultas que devuelvan los mismos resultados). Algunas herramientas de consulta pueden generar sugerencias integradas en la consulta para que las utilice el optimizador.

Algunas bases de datos, como Oracle, ofrecen una tabla de planificación para el ajuste de consultas. Esta tabla de planificación devolverá el costo y el tiempo necesarios para ejecutar una consulta. Oracle ofrece dos enfoques de optimización:

  1. CBO u Optimización basada en costos
  2. RBO u optimización basada en reglas

RBO se está descontinuando lentamente. Para que se pueda utilizar CBO, se deben analizar todas las tablas a las que hace referencia la consulta. Para analizar una tabla, un administrador de bases de datos puede ejecutar código desde el paquete DBMS_STATS.

Otras herramientas para la optimización de consultas incluyen:

  1. Rastreo de SQL [1]
  2. Oracle Trace y TKPROF [2]
  3. Plan de ejecución de Microsoft SMS (SQL) [3]
  4. Registro del 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 .