Thursday, February 25, 2016

Query Execution of PostgreSQL

1. A connection from an application program to the PostgreSQL server has to be established.
The application program transmits a query to the server and waits to receive the results sent back by the server.

2. The parser stage checks the query transmitted by the application program for correct syntax and creates a query tree.

3. The rewrite system takes the query tree created by the parser stage and looks for any rules (stored in the system catalogs) to apply to the query tree.
It performs the transformations given in the rule bodies.

(Syntactic and Semantic Checks, Statement Transformation and View Merging).

4. The planner/optimizer takes the (rewritten) query tree and creates a query plan that will be the input to the executor.

Optimizer creates all possible paths leading to the same result.
For example if there is an index on a relation to be scanned, there are two paths for the scan.
One possibility is a simple sequential scan and the other possibility is to use the index.
Next the cost for the execution of each path is estimated and the cheapest path is chosen.
The cheapest path is expanded into a complete plan that the executor can use.

5. The executor recursively steps through the plan tree and retrieves rows in the way represented by the plan.
The executor makes use of the storage system while scanning relations, performs sorts and joins, evaluates qualifications and finally hands back the rows derived.


No comments:

Post a Comment