48. Présentation des mécanismes internes de PostgreSQL

48.1. Chemin d'une requête
48.2. Établissement des connexions
48.3. Étape d'analyse
48.4. Système de règles de PostgreSQL
48.5. Planificateur/Optimiseur
48.6. Exécuteur
[Note]

Auteur

Ce chapitre est extrait de [sim98], mémoire de maîtrise (Master's Thesis) de Stefan Simkovics. Cette maîtrise a été préparée à l'université de technologie de Vienne sous la direction du professeur (O.Univ.Prof.Dr.) Georg Gottlob et de l'assistante d'université (Univ.Ass.) Mag. Katrin Seyr.

Ce chapitre présente la structure interne du serveur PostgreSQL™. La lecture des sections qui suivent permet de se faire une idée de la façon dont une requête est exécutée ; les opérations internes ne sont pas décrites dans le détail. Ce chapitre a, au contraire, pour but d'aider le lecteur à comprendre la suite des opérations effectuées sur le serveur depuis la réception d'une requête jusqu'au retour des résultats.

48.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.