You are on page 1of 2

18/4/2018 Revisión de las características internas de PostgreSQL

PostgreSQL
Anterior Siguiente

Revisión de las características internas de


PostgreSQL

Nota Autor

Este capítulo apareció originalmente como parte de la tesis doctoral de Stefan Simkovic preparada en la
Universidad de Tecnología de Viena bajo la dirección de O.Univ.Prof.Dr. Georg Gottlob y Univ.Ass. Mag.
Katrin Seyr.

Este capítulo da una visión general de la estructura interna del motor de Postgres. Tras la lectura de las siguientes
secciones, usted tendrá una idea de como se procesa una consulta. No espere aquí una descripción detallada (¡creo
que esa descripción detallada incluyendo todas las estructuras de datos y funciones utilizadas en Postgres excedería
de 1000 páginas!). Este capítulo intenta ayudar en la comprensión del control general y del flujo de datos dentro del
motor desde que se recibe una consulta hasta que se emiten los resultados.

El camino de una consulta


Damos aquí una corta revisión a los pasos que debe seguir una consulta hasta obtener un resultado.

1. Se ha establecido una conexión desde un programa de aplicación al servidor Postgres. El programa de


aplicación transmite una consulta y recibe el resultado enviado por el servidor.

2. La etapa del parser (traductor) chequea la consulta transmitida por el programa de aplicación (cliente) para
comprobar que la sintaxis es correcta y crear un árbol de la consulta.

3. El sistema de reescritura toma el árbol de la consulta creado en el paso del traductor y busca reglas
(almacenadas en los catálogos del sistema) que pueda aplicarle al árbol de la consulta y realiza las
transformaciones que se dan en el/los cuerpo/s de la/s regla/s. Encontramos una aplicación del sistema de
reescritura en la realización de las vistas.

Siempre que se realiza una consulta contra una vista (es decir, una tabla virtual), el sistema de reescritura
reescribe la consulta del usuario en una consulta que accede a las tablas base dadas en la definición de la
vista inicial.

4. El planeador/optimizador toma el árbol de la consulta (reescrita) y crea un plan de la consulta que será el
input para el ejecutor.

Hace esto creando previamente todas las posibles rutas que le conducen a un mismo resultado. Por ejemplo,
si hay un índice en una relación que debe ser comprobada, hay dos rutas para comprobarla. Una posibilidad
es un simple barrido secuencial y la otra posibilidad es utilizar el índice. Luego se estima el coste de ejecución
de cada plan, y se elige y ejecuta el plan más rápido.

5. El ejecutor realiza de modo recursivo el árbol del plan y recupera tuplas en la forma representada en el plan.
El ejecutor hace uso del sistema de almacenamiento mientras está revisando las relaciones, realiza
ordenaciones (sorts) y joins, evalúa cualificaciones y finalmente devuelve las tuplas derivadas.
http://es.tldp.org/Postgresql-es/web/navegable/todopostgresql/overview.html 1/2
18/4/2018 Revisión de las características internas de PostgreSQL

En las siguientes secciones, cubriremos todos los pasos listados antes en más detalle, para dar un mejor
conocimiento de las estructuras de datos y de control interno de Postgres.

Anterior Inicio Siguiente


Codigo Fuente Postgres Subir Cómo se establecen las conexiones

http://es.tldp.org/Postgresql-es/web/navegable/todopostgresql/overview.html 2/2

You might also like