Évaluation et optimisation de requêtes



Documents pareils
TP Bases de données réparties

Le langage SQL Rappels

La présente publication est protégée par les droits d auteur. Tous droits réservés.

Structure fonctionnelle d un SGBD

Bases de données documentaires et distribuées Cours NFE04

Administration de Bases de Données : Optimisation

Encryptions, compression et partitionnement des données

Les bases de données

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Bases de données avancées Introduction

INTRODUCTION AU DATA MINING

1 Introduction et installation

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Cours de bases de données. Philippe Rigaux

Bases de données - Modèle relationnel

Systèmes de Gestion de Bases de Données (SGBD) relationnels Maude Manouvrier

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Cours Bases de données

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Langage SQL : créer et interroger une base

A QUOI SERVENT LES BASES DE DONNÉES?

Introduction aux SGBDR

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Bases de Données. Plan

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Jean-François Boulicaut & Mohand-Saïd Hacid

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Bases de données relationnelles

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Limitations of the Playstation 3 for High Performance Cluster Computing

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Bases de données Cours 1 : Généralités sur les bases de données

Bases de données cours 1

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

16H Cours / 18H TD / 20H TP

Présentation du module Base de données spatio-temporelles

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Bases de Données relationnelles et leurs systèmes de Gestion

Chapitre 10. Architectures des systèmes de gestion de bases de données

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Le Langage De Description De Données(LDD)

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Introduction au Système de Gestion de Base de Données et aux Base de Données

1 Modélisation d une base de données pour une société de bourse

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Architecture des Systèmes d Information Architecture des Systèmes d Information

Définitions. Numéro à préciser. (Durée : )

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Implémentation des SGBD

Bases de données et sites WEB Licence d informatique LI345

Ne laissez pas le stockage cloud pénaliser votre retour sur investissement

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

Créer le schéma relationnel d une base de données ACCESS

Base de données relationnelle et requêtes SQL

Optimisations des SGBDR. Étude de cas : MySQL

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

1 Recherche en table par balayage

Métriques de performance pour les algorithmes et programmes parallèles

Programmation parallèle et distribuée

SYSTÈME DE GESTION DE FICHIERS

INEX. Informatique en Nuage : Expérimentations et Vérification. Livrable n M1 PARALLÉLISME ET ÉVALUATION

Dossier I Découverte de Base d Open Office

Module BDR Master d Informatique (SAR)

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

1. Base de données SQLite

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

Année Universitaire 2009/2010 Session 2 de Printemps

Bases de données documentaires et distribuées Cours NFE04

Le Langage SQL version Oracle

Big Data et Graphes : Quelques pistes de recherche

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

V- Manipulations de nombres en binaire

Optimisation SQL. Quelques règles de bases

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

Ebauche Rapport finale

Cours Bases de données 2ème année IUT

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Excel avancé. Frédéric Gava (MCF)

Bases de données élémentaires Maude Manouvrier

Big Data et Graphes : Quelques pistes de recherche

BASES DE DONNÉES CONCEPTS ET PROGRAMMATION. Antoine Cornuéjols. AgroParisTech, Spécialité Informatique ( ) Version du 19 octobre 2009

Initiation à LabView : Les exemples d applications :

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Java DataBaseConnectivity

Gestion des utilisateurs et de leurs droits

Programmation parallèle et distribuée

Techniques d interaction dans la visualisation de l information Séminaire DIVA

Mes documents Sauvegardés

Transcription:

Évaluation et optimisation de requêtes Serge Abiteboul à partir de tranparents de Philippe Rigaux, Dauphine INRIA Saclay April 3, 2008 Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 1 / 61

But de ce cours Soit une requête. Le but est de l évaluer efficacement. Comment on passe de SQL (déclaratif) à un arbre d opérations (algébrique). Comment l optimiseur obtient plusieurs plans d exécution possibles. Comment il effectue un choix parmi ces plans. Comment la requête est ensuite évaluée. Ce sont des techniques de base, implantées dans tout SGBD relationnel, et dans ORACLE en particulier. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 2 / 61

Séquencement Opérations SQL, QBE,... COMPILATEUR Requête algérique OPTIMISEUR Requête optimisée MACHINE ALGEBRIQUE Résultat 1 compilateur : traduction de la requête dans l algèbre 2 optimiseur : trouver un plan d exécution tel que le coût d exécution soit minimal Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 3 / 61

Introduction à l optimisation des performances Étapes du traitement d une requête Toute requête SQL est traitée en trois étapes : 1 Analyse et traduction de la requête. On vérifie qu elle est correcte, et on la réécrit sous forme de requête algébrique avec des opérations. 2 Optimisation : On le réécrit en requêtes équivalentes On annote les opérateurs avec des choix d algorithmes particuliers On obtient des plans d exécution dont on évalue les coûts On choisit le meilleur. 3 Exécution de la requête : le plan d exécution est compilé et exécuté. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 4 / 61

Introduction à l optimisation des performances La base mathématique: Équivalences algébriques Commutativité et associativité de la jointure Cascade de projections Cascade de sélections Commutation sélection et projection Si F ne porte que sur A 1,...,A n, Si F porte aussi sur B 1,...,B m, E 1 E 2 = E 2 E 1, (E 1 E 2 ) E 3 = E 1 (E 2 E 3 ). π A1,...,A n (π B1,...,B m (E)) = π A1,...,A n (E) σ F1 (σ F2 (E)) = σ F1 F 2 (E) π A1,...,A n (σ F (E)) = σ F (π A1,...,A n (E)) π A1,...,A n (σ F (E)) = π A1,...,A n (σ F (π A1,...,A n,b 1,...,B m (E))) Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 5 / 61

Introduction à l optimisation des performances Équivalences algébriques (2) Commutation sélection et σ F (E 1 OPE 2 ) = σ F (E 1 )OPσ F (E 2 ) Commutation projection et π A1,...,A n (E 1 OPE 2 ) = π A1,...,A n (E 1 )OPπ A1,...,A n (E 2 ) Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 6 / 61

Introduction à l optimisation des performances Équivalence logique Exemple SELECT * FROM VIN V WHERE ((V.DEGRE = 12) OR (V.CRU = Morgon ) OR (V.CRU = Chenas )) AND NOT ((V.CRU = Morgon ) OR (V.CRU = Chenas )); Propriété logique: ((P Q R) (Q R)) (P (Q R)) Expression simplifiée de la requête SELECT * FROM VIN V WHERE ((V.DEGRE = 12) AND NOT ((V.CRU = Morgon ) OR (V.CRU = Chenas )); Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 7 / 61

Introduction à l optimisation des performances Equivalence : contraintes d intégrité EXEMPLE1 Q 1 = π v#,nom (vin) π v#,cépage (vin) Si v# nom Q 1 vin et la jointure est inutile EXEMPLE2 : REQUETE SQL SELECT * FROM VIN WHERE (CRU = Jurançon ) AND (DEGRE 10); CONTRAINTE : CRU = Jurançon DEGRE 12 SELECT * FROM VIN WHERE (CRU = Jurançon ) AND (DEGRE 10) AND (DEGRE 12) Réponse vide Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 8 / 61

Introduction à l optimisation des performances Quelle optimisation? Optimiser quelles ressources : processeurs, accès disques, communication (BD distribuées) Optimiser quoi : le temps de réponse à une requête; le nombre de requêtes traitées par unité de temps - débit. On demande en général que le temps d optimisation soit négligeable par rapport à l exécution de la requête. Coût de l optimisation: faible - peu d accès disques Gain: accès disque à l exécution Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 9 / 61

Introduction à l optimisation des performances Quelle information on peut utiliser? Le traitement s appuie sur les éléments suivants : 1 Le schéma logique de la base, description des tables, des contraintes d intégrité 2 Le schéma physique de la base, indexes et chemins d accès, tailles des blocs 3 Des statistiques : taille des tables, des index, distribution des valeurs R 1 10000 nuplets (site A) et R 2 200 nuplets (site B) pour réaliser R 1 R 2 - il vaut mieux transférer R 2 4 Des statistiques : taux de mises-à-jour, workload 5 Les particularités du système : parallélisme, processeurs spécialisés (e.g. filtre) 6 Des algorithmes : il peuvent différer selon les systèmes Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 10 / 61

Introduction à l optimisation des performances Vue générale Un module du SGBD, l optimiseur, est chargé de : 1 Prendre en entrée une requête, et la mettre sous forme d opérations 2 Se fixer comme objectif l optimisation d un certain paramètre (en général le temps d exécution) 3 construire un programme s appuyant sur les index existant, et les opérations disponibles 4 Choisir le bon plan Construire des plans possibles Evaluer (grossièrement) leurs coûts Choisir le meilleurs Problème: il y a trop de plans possibles Utiliser des heuristiques pour ne pas explorer tout l espace des possibilités. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 11 / 61

Introduction à l optimisation des performances L optimisation sur un exemple Considérons le schéma : CINEMA(Cinéma, Adresse, Gérant) SALLE(Cinéma, NoSalle, Capacité) avec les hypothèses : 1 Il y a 300 n-uplets dans CINEMA, occupant 30 pages. 2 Il y a 1200 n-uplets dans SALLE, occupant 120 pages. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 12 / 61

Introduction à l optimisation des performances Expression d une requête On considère la requête : Adresse des cinémas ayant des salles de plus de 150 places En SQL, cette requête s exprime de la manière suivante : SELECT Adresse FROM CINEMA, SALLE WHERE capacité > 150 AND CINEMA.cinéma = Salle.cinéma Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 13 / 61

Introduction à l optimisation des performances En algèbre relationnelle Traduit en algèbre, on a plusieurs possibilités. En voici deux : 1 π Cinema (σ Capacite>150 (CINEMA SALLE)) 2 π Cinema (CINEMA σ Capacite>150 (SALLE)) Soit une jointure suivie d une sélection, ou l inverse. NB : on peut les représenter comme des arbres. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 14 / 61

Introduction à l optimisation des performances Évaluation des coûts On suppose qu il n y a que 5 % de salles de plus de 150 places. 1 Jointure : on lit 3 600 pages (120x30); Sélection : on obtient 5 % de 120 pages, soit 6 pages. Nombre d E/S : 3 600 + 120x2 + 6 = 3 846. 2 Sélection : on lit 120 pages et on obtient 6 pages. Jointure : on lit 180 pages (6x30) et on obtient 6 pages. Nombre d E/S : 120 + 6 + 180 + 6 = 312. la deuxième stratégie est de loin la meilleure! Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 15 / 61

Introduction à l optimisation des performances Un truc simple qui marche : combiner des opérateurs Des cascades de projections/sélections peuvent se réécrire en une opération de filtrage (qui ne demande qu un scan des données) Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 16 / 61

Introduction à l optimisation des performances Un autre truc qui marche: pousser projections/sélections Pourquoi? Ce sont des réducteurs souvent radicaux Relation R et critère de sélection de probabilité p O(σ c (R)) = p O(R) n tuples de longueur k et projection sur X de longueur k < k O(π X (R)) = O(R) (K /K ) même moins après élimination de dupliquets Pour les jointures, c est le contraire Relations R 1,R 2 probabilité de jointure p Dans le pire des cas O(R 1 ) O(R 2 ) O(R 1 R 2 ) = p O(R 1 ) O(R 2 ) Attention : pas toujours vrai (e.g., si p très petit) Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 17 / 61

Introduction à l optimisation des performances Un autre truc qui marche: réordonner les jointures Exemple : quels inspecteurs a eu l aligoté? Q 1 = π inom (σ nom=aligote (vin) (inspecteur test)) Hypothèse: 40 inspecteurs + 500 tests 40 500 500 puis 1 500 10 il vaut mieux faire Q 2 = π inom ((σ nom=aligote (vin) test) inspecteur) 1 500 10 puis 10 40 10 Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 18 / 61

Introduction à l optimisation des performances Choisir le bon algorithme Toutes les opérations peuvent être coûteuse Il faut choisir le bon algorithme pour la réaliser Exemple : Trouver l enregistrement de Marie Martin Utiliser un index sur nom s il y en a un Fin de ce cours : les algorithmes pour le tri et la jointure Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 19 / 61

Introduction à l optimisation des performances Le schéma de la base Film (idfilm, titre, année, genre, résumé, idmes, codepays) Artiste (idartiste, nom, prénom, annéenaissance) Role (idacteur, idfilm, nomrôle) Internaute (email, nom, prénom, région) Notation (email, idfilm, note) Pays (code, nom, langue) Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 20 / 61

Modèle d exécution Itérateurs Tous les systèmes s appuient sur un ensemble d opérateurs physiques, ou itérateurs. Tous fournissent des interfaces semblables : 1 open : initialise les tâches de l opérateur ; positionne le curseur au début du résultat à fournir ; 2 next : ramène l enregistrement courant se place sur l enregistrement suivant ; 3 close : libère les ressources ; On appele itérateurs ces opérateurs. Ils sont à la base des plans d exécution. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 21 / 61

Modèle d exécution Plan d exécution Un plan d exécution est un arbre d itérateurs. 1 Chaque itérateur consomme une ou deux sources, qui peuvent être soit d autres itérateurs, soit un fichier d index ou de données ; 2 Un itérateur produit un flux de données à la demande, par appels répétés de sa fonction next. 3 Un itérateur peut appeler les opérations open, next et close sur ses itérateurs-sources. La production à la demande évite d avoir à stocker des résultats intermédiaires. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 22 / 61

Modèle d exécution Parcours séquentiel 1 On lit, bloc par bloc, le fichier 2 Quand un bloc est en mémoire, on traite les enregistrements qu il contient. Sous forme d itérateur : 1 le open place le curseur au début du fichier et lit le premier bloc ; 2 le next renvoie l enregistrement courant, et avance d un cran ; on lit un nouveau bloc si nécessaire ; 3 le close libère les ressources. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 23 / 61

Modèle d exécution Traversée d index et accès direct Index : l itérateur prend en entrée une valeur, ou un intervalle de valeurs. 1 on descend jusqu à la feuille (open) ; 2 on ramène l adresse courante sur appel de next, on se décale d un enregistrement dans la feuille courante (éventuellement il faut lire le bloc-feuille suivant) ; Accès direct : s appuie sur un itérateur qui fournit des adresses d enregistrement (décrivez les open, next et close). Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 24 / 61

Modèle d exécution Calcul du coût par l optimiseur Le fichier fait 500 Mo, une lecture de bloc prend 0,01 s (10 millisecondes). 1 Un parcours séquentiel lira tout le fichier (ou la moitié pour une recherche par clé). Donc ça prendra 5 secondes. 2 Une recherche par index implique 2 ou 3 accès pour parcourir l index, et un seul accès pour lire l enregistrement : soit 4 0.01 = 0.04 s, (4 millisecondes). En gros, c est mille fois plus cher. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 25 / 61

Modèle d exécution Exemple de plan d exécution Pour la requête : π Cinema (CINEMA σ Capacite>150 (SALLE)) 1 Un itérateur de parcours séquentiel ; 2 Un itérateur de traversée d index ; 3 Un itérateur de jointure avec index ; 4 Un itérateur d accès direct par adresse ; 5 Un itérateur de projection. Le plan est exécuté simplement par appels open; {next}; close sur la racine (itérateur de projection). Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 26 / 61

Modèle d exécution Rôle des itérateurs Principes essentiels : 1 Production à la demande : le serveur n envoie un enregistrement au client que quand ce dernier 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). Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 27 / 61

Les algorithmes de base Tri externe Le tri externe est utilisé, pour les algorithmes de jointure (sort/merge) l élimination des doublons (clause DISTINCT) pour les opérations de regroupement (GROUP BY)... et bien sûr pour les ORDER BY C est une opération qui peut être très coûteuse sur de grands jeux de données. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 28 / 61

Les algorithmes de base Première phase : le tri On remplit la mémoire, on trie, on vide dans des fragments, et on recommence. M pages Mémoire principale... Lecture Ecriture Disque... Fichier à trier Fragments triés Coût : une lecture + une écriture du fichier.......... Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 29 / 61

Les algorithmes de base Deuxième phase : la fusion On groupe les fragments par M (taille de la zone de tri), et on fusionne. fragments triés...... i1... i2 o i(m 1) i1 i2 i(m 1) fragments initiaux fragments initiaux fragment en sortie Coût : autant de lectures/écritures du fichier que de niveaux de fusion.... o Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 30 / 61

Les algorithmes de base Illustration avec M = 3 Annie Hall, Brazil, Easy Rider, Greystoke, Jurassic Park, Manhattan, Metropolis, Physchose, Shining, Twin Peaks, Underground, vertigo fusion Annie Hall, Brazil, Jurassic Park, Twin Peaks, Underground, Vertigo fusion Easy Rider, Greystoke, Manhattan, Metropolis, Psychose, Shining fusion Annie Hall, Brazil, Twin Peaks, Vertigo Jurassic Park, Underground Greystoke, Psychose Metropolis,Shining Manhattan, Easy Rider fusion fusion Annie Hall, Brazil, Metropolis, Greystoke, Vertigo Twin Peaks Psychose Shining Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 31 / 61

Les algorithmes de base Essentiel : la taille de la zone de tri Un fichier de 75 000 pages de 4 Ko, soit 307 Mo. 1 M > 307Mo : une lecture, soit 307 2 M = 2Mo, soit 500 pages. 1 le tri donne 307 = 154 fragments. 2 2 On fait la fusion avec 154 pages Coût total de 614 + 307 = 921 Mo. NB : il faut allouer beaucoup de mémoire pour passer de 1 à 0 niveau de tri. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 32 / 61

Les algorithmes de base Avec très peu de mémoire M = 1Mo, soit 250 pages. 1 on obtient 307 fragments. 2 On fusionne les 249 premiers fragments, puis les 58 restant. On obtient F 1 et F 2. 3 On fusionne F 1 et F 2. Coût total : 1228 + 307 = 1535 Mo. Résultat : grosse dégradation entre 2 Mo et 1 Mo (calcul approximatif). Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 33 / 61

Algorithmes de jointure Principaux algorithmes Jointure sans index 1 Le plus simple : jointure par boucles imbriquées 2 Le plus courant : jointure par tri-fusion 3 Parfois le meilleur : jointure par hachage Jointure avec index 1 Avec un index : jointure par boucles indexée. 2 Avec deux index : on fait comme si on avait un seul index Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 34 / 61

Algorithmes de jointure Jointures par boucles imbriquées Pas d index? On fait bête et méchant. Vertigo 1958 Annie Hall 1977 Spielberg Jurassic Park Hitchcock Psychose Allen Manhattan Lang Metropolis Hitchcock Vertigo Allen Annie Hall Kubrik Shining Spielberg Jurassic Park Hitchcock Psychose Allen Manhattan Lang Metropolis Hitchcock Vertigo Allen Annie Hall Kubrik Shining Brazil 1984... Comparaison Association Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 35 / 61

Algorithmes de jointure Essentiel : la mémoire On alloue le maximum à la table intérieure de la boucle imbriquée. mémoire Table extérieure Table intérieure m 2 pages Sortie Si la table intérieure tient en mémoire : une seule lecture des deux tables suffit. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 36 / 61

Algorithmes de jointure Jointure par tri fusion Plus efficace que les boucles imbriquées pour de grosses tables. On trie les deux tables sur les colonnes de jointures On effectue la fusion C est le tri qui coûte cher. Important : on ne peut rien obtenir tant que le tri n est pas fini. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 37 / 61

Algorithmes de jointure Tri-fusion : illustration Allen Annie Hall 1977 Spielberg Jurassic Park 1992 Allen Manhattan 1979... FUSION Allen Spielberg Allen Lang Hitchcock Kubrik Hitchcock Annie Hall Jurassic Park Manhattan Metropolis Psychose Shining Vertigo Annie Hall 1977 Brazil 1984 Easy Rider 1969 Greystoke 1984 Jurassic Park 1992 Manhattan 1979 Metropolis 1926 Psychose 1960 TRI Fichiers Artistes TRI Fichier films Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 38 / 61

Algorithmes de jointure Jointure par hachage En théorie, souvent le plus efficace. Très rapide quand une des deux tables est petite (1, 2, 3 fois la taille de la mémoire). Pas très robuste (efficacité dépend de plusieurs facteurs). Algorithme en option dans ORACLE. Il est indispensable d avoir des statistiques. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 39 / 61

Algorithmes de jointure Principes de la jointure par hachage Un peu compliqué... Le principal : On hache la plus petite des deux tables en n fragments. On hache la seconde table, avec la même fonction, en n autres fragments. On réunit les fragments par paire, et on fait la jointure. Essentiel : pour chaque paire, au moins un fragment doit tenir en mémoire. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 40 / 61

Algorithmes de jointure Illustration : phase de hachage Table A hachage mémoire A1 A2 B1 B2 Table B A6 B6 Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 41 / 61

Algorithmes de jointure Illustration : phase de jointure mémoire Fragment A en mémoire Fragment B Sortie Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 42 / 61

Algorithmes de jointure Jointure avec index Avec un index, on utilise les boucles imbriquées indexées. On balaye la table non indexée Pour chaque ligne, on utilise l attribut de jointure pour traverser l index sur l autre table. Avantages : Très efficace (un parcours, plus des recherches par adresse) Favorise le temps de réponse et le temps d exécution Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 43 / 61

Algorithmes de jointure Et avec deux index? On pourrait penser à la solution suivante : Fusionner les deux index : on obtient des paires d adresse. Pour chaque paire, aller chercher la ligne A, la ligne B. Problématique car beaucoup d accès aléatoires (cf. «Quand utiliser un index»). En pratique : On se ramène à la jointure avec un index On prend la petite table comme table extérieure. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 44 / 61

Plans d exécution L essentiel de ce qu il faut savoir Qu est-ce qu un plan d exécution? C est un programme combinant des opérateurs physiques (chemins d accès et traitements de données). Il a la forme d un arbre : chaque nœud est un opérateur qui prend des données en entrée applique un traitement produit les données traitées en sortie Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 45 / 61

Plans d exécution L essentiel de ce qu il faut savoir (suite) La phase d optimisation proprement dite : Pour une requête, le système a le choix entre plusieurs plans d exécution. Ils diffèrent par l ordre des opérations, les algorithmes, les chemins d accès. Pour chaque plan on peut estimer : le coût de chaque opération la taille du résultat Objectif : diminuer le plus vite possible la taille des données manipulées. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 46 / 61

Plans d exécution Laissons le choix au système! Bon à savoir : il y a autant de plans d exécution que de «blocs» dans une requête. Exemple : cherchons tous les films avec James Stewart, parus en 1958. SELECT titre FROM Film f, Role r, Artiste a WHERE a.nom = Stewart AND a.prenom= James AND f.idfilm = r.idfilm AND r.idacteur = a.idartiste AND f.annee = 1958 Pas d imbrication : un bloc, OK! Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 47 / 61

Plans d exécution Seconde requête (2 blocs) La même, mais avec un niveau d imbrication. SELECT titre FROM Film f, Role r WHERE f.idfilm = r.idfilm AND f.annee = 1958 AND r.idacteur IN (SELECT idartiste FROM Artiste WHERE nom= Stewart AND prenom= James ) Une imbrication sans nécessité : moins bon! Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 48 / 61

Plans d exécution Troisième requête (2 blocs) La même, mais avec EXISTS au lieu de IN. SELECT titre FROM Film f, Role r WHERE f.idfilm = r.idfilm AND f.annee = 1958 AND EXISTS (SELECT x FROM Artiste a WHERE nom= Stewart AND prenom= James AND r.idacteur = a.idartiste) Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 49 / 61

Plans d exécution Quatrième requête (3 blocs) La même, mais avec deux imbrications : SELECT titre FROM Film WHERE annee = 1958 AND idfilm IN (SELECT idfilm FROM Role WHERE idacteur IN (SELECT idartiste FROM Artiste WHERE nom= Stewart AND prenom= James )) Très mauvais : on force le plan d exécution, et il est très inefficace. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 50 / 61

Plans d exécution Pourquoi c est mauvais On parcourt tous les films parus en 1958 Pour chaque film : on cherche les rôles du film, mais pas d index disponible Ensuite, pour chaque rôle on regarde si c est James Stewart Ca va coûter cher!! Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 51 / 61

Plans d exécution Exemples de plans d exécution Gardons la même requête. Voici les opérations disponibles : CHEMINS D ACCES OPERATIONS PHYSIQUES Séquentiel TABLE Parcours séquentiel Adresse TABLE Accès par adresse Critère Selection Sélection selon un critère Attribut(s) Tri Tri sur un attribut Critère Filtre Filtre d un ensemble en fonction d un autre Critère Jointure Jointure selon un critère Attribut(s) INDEX Parcours d index Critère Fusion Fusion de deux ensembles triés Attribut(s) Projection Projection sur des attributs Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 52 / 61

Plans d exécution Sans index sur le nom Projection [artiste,role] Jointure [film] [artiste] James Stewart Sélection Jointure [role] Adresse Role 1958 Sélection Adresse Film Séquentiel Artiste IdArtiste Index Role(idActeur, idfilm) idfilm Index Film (idfilm) Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 53 / 61

Plans d exécution Avec index sur le nom Projection Jointure [artiste,role] [artiste] Jointure [role] 1958 Selection Adresse Artiste Adresse Rôle Adresse Film James Stewart Index Artiste(nom,prenom) idartiste Index Role(idActeur, idfilm) Id_cinema Index Film (idfilm) Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 54 / 61

Plans d exécution Sans index Projection idacteur Tri [film,rôle] Fusion [film] Fusion [rôle] idfilm idfilm idartiste Tri Tri Tri James Stewart 1958 Sélection Sélection Séquentiel Séquentiel Séquentiel Film Rôle Artiste Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 55 / 61

Plans d exécution Faut-il toujours utiliser l index? Pour les recherches par clé : oui. Sinon se poser les questions suivantes : 1 Le critère de recherche porte-t-il sur un ou sur plusieurs attributs? S il y a plusieurs attributs, les critères sont-ils combinés par des and ou des or? 2 Quelle est la sélectivité (pourcentage des lignes concernées) de la recherche? Mauvaise sélectivité = contre-performant d utiliser l index. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 56 / 61

Plans d exécution Ce qui peut poser problème Toutes les recherches par intervalle. Index 9 10 11 12 13 1 5 9 2 6 10 3 7 11 4 8 12 13... 14......... Page 1 Page 2 Page 3 Page 4 Recherche entre 9 et 13 : mauvais. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 57 / 61

Plans d exécution Histogrammes Pour connaître la sélectivité, on s appuie sur des histogrammes. 12 8 0 10 20 30 40 50 60 70 80 90 100 (a) Histogramme en hauteur 20 20 20 20 20 0 42 61 70 90 100 (b) Histogramme en largeur Les histogrammes donnent la distribution des valeurs dans une colonne. Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 58 / 61

Plans d exécution Exercice vin (v#, nom, cépage) inspecteur (i#, inom) test (v#, i#, date, note) Exemple: quels vins ont eu un test négatif? Q 1 = π nom σ note=f (vin test) Q 2 = π nom (vin σ note=f (test)) 50 vins 10 tests par vin seulement 3 tests négatifs Pourquoi préférer Q 2? Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 59 / 61

Plans d exécution Exercice Exemple : quels inspecteurs ont fait échouer l aligoté? Q 1 = π inom (σ nom=aligote,note=f (vin (inspecteur test))) même technique : pousser les sélections pour limiter la taille des jointures Pourquoi préférer? Q 2 = π inom (σ nom=aligote (vin) (inspecteur σ note=fail (test))) Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 60 / 61

Plans d exécution Merci Serge (INRIA Saclay) Évaluation et optimisation de requêtes April 3, 2008 61 / 61