Motor de ejecución de consultas en SQL

En este artículo, discutiremos el motor de ejecución de consultas en SQL y todos los aspectos cuando ejecutamos cualquier consulta. Cuando ejecutamos cualquier consulta para obtener los datos de la base de datos, al mismo tiempo suceden muchas cosas simultáneamente para obtener los resultados deseados. 

Analicemos brevemente lo que sucede cuando enviamos una consulta y luego analizaremos todas las fases de la ejecución de la consulta.

Cuando surge una consulta, ¿cómo la responde realmente la base de datos? Entonces, lo primero que hace el sistema de base de datos es analizar la consulta SQL y descubrir qué está tratando de hacer la consulta, luego evalúa diferentes expresiones que son equivalentes a la consulta SQL dada. La consulta SQL se divide en álgebra relacional.             

Por ejemplo, considere una consulta: 

Consulta:

Select * from account
Where balance>1000;

El objetivo de esta consulta es conocer los detalles de todas las cuentas cuyo saldo es >1000. Una vez que escribimos esta consulta, esto es equivalente a la siguiente expresión de álgebra relacional.

πbalance( δbalance>1000(account) ) 

La consulta SQL anterior también es equivalente a la siguiente expresión de álgebra relacional.

δbalance>1000( πbalance(account) ) 

Ambas expresiones de consulta son iguales. Cuando se analiza una consulta, generalmente suceden 2 cosas:

  • Se generan todos los planes de acción equivalentes
  • Y para cada uno de los planes de acción equivalentes generados se crea un árbol de orden de consulta.

Y luego se evalúa el árbol de orden de consulta.

Fases de la Evaluación de la Consulta:

  • Analizador/Traductor
  • Optimizador
  • Plan de ejecución
  • Motor de ejecución de consultas

Phases of query evaluation

Ahora discutiremos cada fase de la evaluación de consultas en detalle.

1. Analizador/Traductor: cuando enviamos cualquier consulta para ejecutar, la tarea del analizador es verificar la sintaxis y verificar la consulta. Comprueba si la sintaxis de consulta es correcta o no. También comprueba la semántica de consulta. Nuestro comando SQL es un lenguaje de alto nivel, por lo que debemos convertirlo a un lenguaje de bajo nivel. El traductor convierte la consulta SQL en una expresión de álgebra relacional, es decir, de un lenguaje de alto nivel a un lenguaje de bajo nivel.

2. Optimizador: como sabemos, cuando enviamos una consulta, se convierte en varias expresiones de álgebra relacional. Tenemos muchas expresiones de álgebra relacional para la consulta dada. Optimizer selecciona la consulta que tiene un costo bajo. Para este optimizador utiliza las estadísticas sobre los datos.

3. Plan de Ejecución: En esta fase, la base de datos decide el orden de ejecución de las instrucciones de consulta dadas. Por ejemplo, considere la siguiente consulta:

Select * From emp_table
Where experience>5;

Aquí la base de datos primero ejecutará la instrucción From , luego Where y finalmente la instrucción Select . Entonces, el orden de ejecución de esta consulta es el siguiente:   

From->Where->Select

4. Motor de ejecución de consultas: el motor de ejecución realizará operaciones al obtener datos de la base de datos. El motor de ejecución de consultas tomará un plan de evaluación de consultas, luego ejecutará ese plan y devolverá las respuestas a la consulta. Ejemplos de motores de consulta son Apache Spark, Apache Drill, Presto, etc. Básicamente, el motor de ejecución de consultas interpreta el comando SQL y accede a los datos de la base de datos y finalmente devuelve la respuesta de la consulta SQL dada. Hay muchas funciones realizadas por la ejecución de consultas, algunas de ellas son:

  • Actúa como despachador de todos los comandos en el plan de ejecución. Recorre en iteración todos los comandos del plan hasta que se completa el lote.
  • E interactúa con el motor de almacenamiento para recuperar y actualizar datos de tablas e índices.

Publicación traducida automáticamente

Artículo escrito por sftrengdeepak y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *