stringtranslate.com

plan de consulta

Un plan de consulta (o plan de ejecución de consultas ) 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 posibles correctos 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 base de datos determinado puede ofrecer uno o más mecanismos para devolver el plan para una consulta determinada. Algunos paquetes incluyen herramientas que generarán una representación gráfica de un plan de consulta. Otras herramientas permiten establecer un modo especial en la conexión para hacer 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 a examinar. En Oracle, por ejemplo, esto se puede lograr utilizando la declaración 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 combinación de dos tablas en una base de datos de muestra incluida:

SELECCIONE * DE Recursos Humanos . Empleado AS e INNER JOIN Persona . Póngase en contacto con AS c ON e . ID de contacto = c . ContactID ORDEN POR c . Apellido               

La interfaz de usuario permite explorar 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 proporcionado para la misma consulta en la captura de pantalla se muestra aquí:

Texto stmt---- |-- Ordenar ( ORDENAR POR : ( [ c ] . [ Apellido ] ASC ))   |-- Bucles anidados ( unión interna , REFERENCIAS EXTERNAS : ( [ e ] . [ ContactID ] , [ Expr1004 ] ) CON PREFETCH DESORDENADA )         |-- Escaneo 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 ] . [ Empleado ] . [ ContactID ] como [ e ] . [ ContactID ] ) ORDENADO ADELANTE )    

Indica que el motor de consulta realizará un escaneo del índice de clave principal en la tabla Empleado y una búsqueda coincidente a través del índice de clave principal (la columna ContactID) en la tabla Contacto 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 ajustar la consulta, el usuario debe comprender los diferentes operadores que puede utilizar la base de datos y cuáles podrían ser más eficientes que otros y al mismo tiempo proporcionar resultados de consulta semánticamente correctos.

Ajuste de base de datos

Revisar el plan de consulta puede presentar oportunidades para nuevos índices o cambios en los índices existentes. También puede mostrar que la base de datos no aprovecha 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, encontrar 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, proporcionan una tabla de planes para ajustar las consultas. Esta tabla de plan devolverá el costo y el tiempo para ejecutar una consulta. Oracle ofrece dos enfoques de optimización:

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

RBO está quedando obsoleto lentamente. Para utilizar CBO, se deben analizar todas las tablas a las que hace referencia la consulta. Para analizar una tabla, un DBA puede ejecutar código desde el paquete DBMS_STATS.

Otras herramientas para la optimización de consultas incluyen:

  1. Seguimiento SQL [1]
  2. Seguimiento 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. ^ "Seguimiento SQL". 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 .