Systèmes de gestion de bases de données Exécution de requêtes: mod ele d exécution P. Rigaux Cnam, dépt. informatique May 6, 2015 PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 6, 2015 1 / 1
Le moteur d exécution Une requête est prise en charge par un moteur d exécution qui produit dynamiquement un programme ou plan d exécution Ce programme a une forme spéciale: c est un arbre constitué d opérateurs échangeant des flux de données. Les opérateurs ont une forme générique (itérateurs); fournissent une tâche spécialisée (cf. l algèbre relationnelle) un petit nombre suffit! Dans ce cours On va apprendre à implanter un moteur d exécution pour (presque toutes) les requêtes SQL! PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 6, 2015 2 / 1
Matérialisation et pipelinage Prenons deux opérations, un parcours d index qui fournit des adresses, et un accès direct qui fournit des tuples. Première solution: on exécute en séquence, avec matérialisation. Pas bon: consomme de la mémoire; introduit une latence inutile. PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 6, 2015 3 / 1
La bonne solution On connecte les opérateurs entre eux. Pas de stockage intermédiaire; pas de latence (sauf si...). Production à la demande de l application ( aspirateur ). PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 6, 2015 4 / 1
Opérateur bloquant Il est parfois nécessaire d effectuer un calcul complet avant de fournir le premier tuple.. le tri ( order by ); l élimination des doublons ( distinct ); le partitionnement ( group by ); On introduit alors un opérateur bloquant: très mauvais pour la latence. PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 6, 2015 5 / 1
Temps de réponse et temps d exécution À comparer: select * from T et select distinct * from T Bien distinguer Temps de réponse: temps pour obtenir le premier tuple. Temps d exécution: temps pour obtenir tous les tuples. Avec un opérateur bloquant on additionne l exécution de la requête et celle de l application. PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 6, 2015 6 / 1
Notion d itérateur Chaque opérateur est implanté sous forme d un itérateur. Trois fonctions: open : initialise les tâches de l opérateur ; positionne le curseur au début du résultat à fournir ; next : ramène l enregistrement courant se place sur l enregistrement suivant ; close : libère les ressources ; Connexion: Un itérateur consomme des tuples d un ou deux autres itérateurs. Un itérateur produit des tuples pour un autre itérateur (ou pour l application). PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 6, 2015 7 / 1
Premier exemple: l opérateur FullScan Fonction open(): on se positionne au début du fichier. function openscan { # Entree: $T est la table } # Initialisations p = $T.first; # Premier bloc de T e = $p.init; # On se place avant le premier enregistrement PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 6, 2015 8 / 1
L opérateur FullScan (suite) Fonction next(): on récupère le tuple suivant. function nextscan { # Enregistrement suivant $e = $p.next; # A-t-on atteint le dernier enregistrement du bloc? if ($e = null) do # On passe au bloc suivant $p = $T.next; # Dernier bloc atteint? if ($p = null) then return null; else $e = $p.first; fi done } return $e; PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 6, 2015 9 / 1
Ma première exécution de requête La requête select * from T est implantée par: # Parcours de la table T $curseur = new FullScan(T); $tuple = $curseur.next(); while [$tuple!= null ] do # Traitement du tuple... # Passage au tuple suivant $tuple = $curseur.next(); done # Fermeture du curseur $curseur.close(); PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 6, 2015 10 / 1
Résumé Principes essentiels : 1 Production à la demande : le serveur n envoie un enregistrement à l application que quand celle-ci le demande ; 2 Pipelinage : on essaie d éviter le stockage en mémoire de résultats intermédiaires : le résultat est calculé au fur et à mesure. Conséquences : temps de réponse minimisé (pour obtenir le premier enregistrement) mais attention aux plans bloquants (ex. plans avec un tri). PR (Cnam, dépt. info) Systèmes de gestion de bases de données May 6, 2015 11 / 1