PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 12.22 » Internes » Présentation des mécanismes internes de PostgreSQL » Chemin d'une requête

50.1. Chemin d'une requête

Ceci est un rapide aperçu des étapes franchies par une requête pour obtenir un résultat.

  1. Une connexion au serveur est établie par une application. Elle transmet une requête et attend le retour des résultats.

  2. L'étape d'analyse (parser stage) vérifie la syntaxe de la requête et crée un arbre de requête (query tree).

  3. Le système de réécriture (rewrite system) recherche les règles (stockées dans les catalogues système) à appliquer à l'arbre de requête. Il exécute les transformations indiquées dans le corps des règles (rule bodies).

    La réalisation des vues est une application du système de réécriture. Toute requête utilisateur impliquant une vue (c'est-à-dire une table virtuelle), est réécrite en une requête qui accède aux tables de base, en fonction de la définition de la vue.

  4. Le planificateur/optimiseur (planner/optimizer) transforme l'arbre de requête (réécrit) en un plan de requête (query plan) passé en entrée de l'exécuteur.

    Il crée tout d'abord tous les chemins possibles conduisant au résultat. Ainsi, s'il existe un index sur une relation à parcourir, il existe deux chemins pour le parcours. Le premier consiste en un simple parcours séquentiel, le second utilise l'index. Le coût d'exécution de chaque chemin est estimé ; le chemin le moins coûteux est alors choisi. Ce dernier est étendu en un plan complet que l'exécuteur peut utiliser.

  5. L'exécuteur traverse récursivement les étapes de l'arbre de planification (plan tree) et retrouve les lignes en fonction de ce plan. L'exécuteur utilise le système de stockage lors du parcours des relations, exécute les tris et jointures, évalue les qualifications et retourne finalement les lignes concernées.

Les sections suivantes présentent en détail les éléments brièvement décrits ci-dessus.