De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Un plan de consultas (o plan de ejecución de consultas ) es una secuencia de pasos que se utilizan para acceder a los datos en un sistema de administració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 hay 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 posibles planes diferentes y 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 [ editar ]

Un sistema de gestión de base de datos dado puede ofrecer uno o más mecanismos para devolver el plan para una consulta determinada. Algunos paquetes cuentan con 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 que se va a examinar. En Oracle, por ejemplo, esto se puede lograr utilizando la declaración EXPLAIN PLAN.

Planos gráficos [ editar ]

Planos textuales [ editar ]

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

StmtText ----  | - Ordenar ( ORDER  BY : ([ c ] . [ LastName ]  ASC ))  | - Bucles anidados  ( Inner Join , OUTER REFERENCES : ([ e ] . [ ContactID ], [ Expr1004 ]) WITH desordenada PREFETCH ) | - agrupado Índice de escaneado ( OBJETO : ([ AdventureWorks ] . [          Recursos humanos ] . [ Empleado ] . [ PK_Employee_EmployeeID ]  AS  [ e ]))  | - agrupado  Índice  Seek ( OBJETO : ([ AdventureWorks ] . [ Persona ] . [ Contacto ] . [ PK_Contact_ContactID ]  AS  [ c ]),  SEEK : ([ c ] . [ ContactID ] = [ AdventureWorks ]. [ Recursos Humanos ] . [ Empleado ] . [ ContactID ]  como  [ e ] . [ ContactID ])  ORDENADO  FORWARD )

Indica que el motor de consulta hará un escaneo sobre el í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 combinació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 sin dejar de proporcionar resultados de consulta semánticamente correctos.

Optimización de la base de datos [ editar ]

La revisión del 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 correctamente los índices existentes (consulte el optimizador de consultas ).

Ajuste de consultas [ editar ]

Un optimizador de consultas no siempre elegirá el plan de consultas más eficiente para una consulta determinada. En algunas bases de datos, se puede revisar el plan de consultas, encontrar problemas y, a continuación, el optimizador de consultas da pistas sobre cómo 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 incrustadas en la consulta para que las utilice el optimizador.

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

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

RBO está siendo desaprobado lentamente. Para que se utilice CBO, se deben analizar todas las tablas a las que hace referencia la consulta. Para analizar una tabla, un DBA puede lanzar 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 de rendimiento de Tableau (todas las bases de datos) [4]

Referencias [ editar ]

  1. ^ "Seguimiento de 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" . Tableau.com . Tableau Inc . Consultado el 30 de marzo de 2020 .