Evaluation des Operations Relationnelles

Slides:



Advertisements
Présentations similaires
Optimisation des requêtes
Advertisements

Optimisation algébrique de requêtes relationnelles
IFT313 Introduction aux langages formels
1 Bases de Données Distribuées Chapitre 22, Sections 22.6–22.14.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
1 Evaluation des Operations Relationnelles Chapitre 14, Section 14.4.
1 Évaluation des Requêtes: Survol Chapitre Objectifs Catalogue Préliminaires: Techniques de base pour traiter des requêtes Chemin daccès Correspondance.
Optimisation des Requêtes Relationnelles
1 Évaluation des Requêtes: Survol Chapitre Objectifs Catalogue Préliminaires: Techniques de base pour traiter des requêtes Chemin daccès Correspondance.
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Évaluation des Requêtes: Survol Chapitre 12.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 INFOR 101 Chapitre 4 Marianne Morris. 2 Révision de chapitre 3 Algorithmes Sequential Search Selection Sort Binary Search Ordre de magnitude  (n) Mesurer.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Matière Sélectionnée: Triage Externe, Join à Hachage, … Chapitres 13—15: 13.1—13.5, 14.4,
Evaluation de requêtes Quelques résultats préliminaires 1 Amin Mesmoudi.
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
SQL query - 1 / D. Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes Agrégats et groupement.
SQL query - 1 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes.
Traffic Sign Recognition Jacob Carlson Sean St. Onge Advisor: Dr. Thomas L. Stewart.
Les Instructions Itératives (Les Boucles)
Construire des requêtes
Theme Three Speaking Questions
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Initiation aux bases de données et à la programmation événementielle
INFO 2014 Fichiers et base de données
Langage de manipulation de données (LMD)
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Techniques de décomposition
Algorithmique Avancée et Complexité Chap2:Complexité et Optimalité
Algorithmique Avancée et Complexité Chap3:Diviser pour Régner
Work: ISA8895 Implementation Section: Interoperability Chapter: B2O
Algorithmiques Abdelbasset KABOU
Les bases de données et le modèle relationnel
l y a which we have already learned means “there is/are l y a which we have already learned means “there is/are.” When we put a measure of time.
Technologies de l’intelligence d’affaires Séance 14
1MPES2 Remarkable Identities
SQL LID – INTERROGATIN DES DONNEES
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
La méthode du simplexe. 1) Algorithme du simplexe  Cet algorithme permet de déterminer la solution optimale, si elle existe, d’un problème de programmation.
Manipulation D’Une Base De Données
Overview %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% initialization.
Calcul Relationnel Chapitre 4, Section 4.3.
Langage d’interrogation des Données LID
1 Copyright © 2004, Oracle. Tous droits réservés. Extraire des données à l'aide de l'instruction SQL SELECT.
2 Copyright © 2004, Oracle. Tous droits réservés. Restreindre et trier les données.
4 Copyright © 2004, Oracle. Tous droits réservés. Afficher des données agrégées à l'aide des fonctions de groupe.
5 Copyright © 2004, Oracle. Tous droits réservés. Afficher des données de plusieurs tables.
Algèbre relationnelle
SyncoTM 200 Fonctionnement et mise en service
Comptes les points noirs !!!
1. Comment t’appelles-tu?
Tri Externe Chapitre 13: 13.1—13.5
BUFFER CIRCULAIRE Meryem EL BAKRI. PLAN Introduction Buffer circulaire Fonctionnement.
Info Bases de données avancées
Survol du Stockage et de l’Indexage
Survol du Stockage et de l’Indexage
Comptes les points noirs !!!
PROGRAMMATION ET ENSEIGNEMENT
Flowchart Itération Cours 04.
1. Comment t’appelles-tu?
Salut cher orange! Monsieur Couleur
Chapter 11: Récursivité Java Software Solutions Second Edition
Info Bases de données avancées
SQL: Contraintes et Triggers
Algèbre Relationnelle
La programmation dynamique
Transcription de la présentation:

Evaluation des Operations Relationnelles Chapitre 14, Section 14.4 The slides for this text are organized into chapters. This lecture covers the first part of Chapter 14, focusing on algorithms for evaluating the join operation. The set of slides labeled “Chapter 14, Part B” covers the remainder of Chapter 14. This chapter should be covered after Chapter 8, which provides an overview of storage and indexing. At the instructor’s discretion, it can also be omitted without loss of continuity in other parts of the text. (In particular, Chapter 20 can be covered without covering this chapter, though this material gives more insight into the workings of a DBMS.) This chapter is most appropriate for a course with an implementation emphasis, and is a candidate for omission in a course with an applications emphasis. 1

Operations Relationnelles Comment implémenter les 5 opérations suivantes: Sélection ( ) Sélectionne une partie des tuples de la relation. Projection ( ) Efface des colonnes indésirables de la relation. Join ( ) Permets la combinaison de deux relations. Différence ( ) Tuples d’une 1ère relation , moins ceux d’une 2ème. Union ( ) Tuples d’une 1ère relation , plus ceux d’une 2ème. Agrégation (SUM, MIN, etc.) et GOUP BY 3

Rappel: Exemple Reserves: Sailors: Sailors (sid: integer, sname: string, rating: integer, age: real) Reserves (sid: integer, bid: integer, day: dates, rname: string) Reserves: longueur des tuples de Reserves = 40 bytes; #tuples/pg = 100; #pgs = 1000 Sailors: longueur des tuples de Sailors = 50 bytes; #tuples/pg = 80; #pgs = 500 4

Joins à Egalite avec une colonne de Join SELECT * FROM Reserves R1, Sailors S1 WHERE R1.sid=S1.sid Expression algébrique: R S. R S est large; R S suivi d’une sélection sera inefficient. D’où le join doit être optimisé avec doigté. Supposons qu’il y a M pages dans R, pR tuples par page de R N pages dans S, pS tuples par page de S. R est Reserves et S est Sailors. Des conditions plus complexes seront étudiées plutard. Coûts exprimés en terme de # of I/Os (i.e. # de pages affectées). 5

Join à Boucles Imbriquées Simples foreach tuple r in R do foreach tuple s in S do if ri == sj then add <r, s> to result Pour chaque tuple de la relation externe R, nous scannons la relation interne S dans son entièreté. Coût: M + pR * M * N = 1000 + 100*1000*500 I/Os. Boucles imbriquées par page: pour chaque page de R, obtenir chaque page de S; ensuite sortir les paires de tuples correspondants <r, s>. Coût : M + M*N = 1000 + 1000*500 Si la plus petite relation (S) est externe, le coût sera 500 + 500*1000 6

Boucles Imbriquées à Bloc Utilise une page comme tampon d’entrée pour scanner la relation interne S, une page comme tampon de sortie et toutes les autres pages restantes pour contenir les blocs de la relation externe R. Pour chaque bloc de B-1 pages de R faire comme suit: Scanner S et pour chaque tuple r dans le bloc de R correspondant à un tuple s dans la page en mémoire de S, ajouter <r, s> au résultat du join. R & S Résultat Table à hachage pour un bloc de R (k < B-1 pages) . . . . . . . . . Page de input pour S Page de output 9

Exemples de Boucles Imbriquées à Bloc Coût: Scannage de R + # blocs de R * scannage de S #blocs de R = Avec Reserves (R) comme relation externe et B-2 = 100 pages: Le coût du scannage de R est de 1000 I/Os. Nous avons un total de 10 blocs. Pour chaque bloc de R, nous scannons S; cela donne 10*500 I/Os. Avec Sailors comme relation externe et B-2=100 pages: Le coût du scannage de S est de 500 I/Os. Nous avons un total de 5 blocs. Pour chaque bloc de S, nous scannons R; cela donne 10*1000 I/Os.

Join à Boucles Imbriquées avec Index foreach tuple r in R do foreach tuple s in S where ri == sj do add <r, s> to result S’il y a un index sur la colonne de la condition de join d’une des relations (p.ex. S), faire de cette relation la relation interne et exploiter l’index. Coût: M + ( (M*pR) * coût pour trouver le tuple correspondant de S) Pour chaque tuple de Reserves, le coût de la vérification de l’index sur Sailors est d’environ 1.2 pour le hachage et 2-4 pour les arbres B+. Le coût de trouver le tuple correspondant de Sailors dépend ensuite du groupement de l’index.

Exemples de Boucles Imbriquées avec Index Hachage (Alt. 2) de sid de Sailors (rel. interne): Scannage de Reserves: 1000 I/Os de pages, 100*1000 tuples. Pour chaque tuple de Reserves: 1.2 I/Os pour obtenir l’entrée d’index, plus 1 I/O pour obtenir le tuple correspondant de Sailors. Total: 220,000 I/Os (=100,000 * (1+1.2)). Hachage (Alt. 2) de sid de Reserves (rel. interne): Scannage de Sailors: 500 I/Os de pages, 80*500 tuples. Pour chaque tuple de Sailors: 1.2 I/Os pour trouver la page de l’index contenant l’entrée des données, plus le coût de puiser les tuples correspondants de Reserves. Supposez 2.5 réservations par navigateur (100,000 / 40,000); le coût pour les puiser est de 1 ou 2.5 I/Os dépendant du fait que l’index est regroupé ou pas. 8

Sort-Merge (R S) « Jointure à tri-fusion ». i=j « Jointure à tri-fusion ». Trier R et S selon leur colonne de join, ensuite les scanner afin de faire une fusion (suivant la colonne de join.), enfin sortir les tuples du résultat. Avancer le scannage de R jusqu’à ce que le tuple courant de R >= tuple courant de S, ensuite avancer le scannage de S jusqu’à ce que le tuple courant de S >= tuple courrant de R; répéter cela jusqu’à ce que le tuple courrant de R = tuple courrant de S. A ce moment, tous les tuples de R avec la même valeur que le groupe courant de S correspondent; sortir tous ces tuples qui correspondent. Continuer le scannage de R et S. R est scanné une fois; chaque groupe de S est scanné une fois pour chaque tuple correspondant de R. 11

Exemple de Join à Tri-Fusion coût: M log M + N log N + (M+N) Le coût du scannage (M+N) pourrait devenir M*N Avec 35, 100 ou 300 pages tampon, Reserves et Sailors peuvent toutes les deux être triées en 2 passages; coût total du join: 7500. 12

Amélioration du Join àTri-Fusion Nous pouvons combiner la phase de fusion requise par le tri de R et S avec la phase de fusion requise par le join. Produire des runs de taille B pour R et S (passage 0). Allouer 1 page par run de chaque relation. Fusionner les runs de R séparément des runs de S; fusionner les flux de données de R et S pendant qu’ils sont générés (passage 1). Appliquer la condition de join en passant. Coût: lecture + écriture de chaque relation au passage 0 + lecture de chaque relation lors du passage 1 + écriture des tuples résultats. Dans l’exemple, le coût descend de 7500 à 4500 I/Os. En pratique, le coût du join à tri-fusion est linéaire. 13

Join à Hachage: Assomption Suppositions faites: Le # de pages tampon est B: 1 pour entrée et 1 pour sortie Le # de partitions est k Le # de pages tampon utilisé par les partitions est B-2 Hacher R et S sur les colonnes de join i et j 19

Table de hachage pour la partition Join à Hachage B pages tampon Disque Dique Relation OUTPUT 2 INPUT 1 Fonction de hachage h B-1 Partitions . . . Partition: Repartir les deux relations R et S en utilisant la même fonction de hachage h: les tuples de R dans la partition i de R ne peuvent être joints que avec ceux de la partition i de S. Vérification: Lire une partition Ri de R en mémoire et ensuite la hacher en utilisant une fonction de hachage h2 (différente de h). Scanner la partition Si de S pour rechercher les tuples correspondants aux tuples de Ri (en utilisant h2 pour vérifier la table de hachage de Ri). Partitions de R & S Input pour Si Table de hachage pour la partition Ri (k < B-1 pages) B pages tampon Disque Output Résultat h2 14

Join à Hachage: Algorithme // Calculer le join de deux relations R et S sur les colonnes Ri et Sj. // Repartir R en k partitions foreach tuple r de R do: lire r et l’ajouter à la page tampon h(ri); // Forcer cette page vers le disque au // fur et à mesure qu’elle se remplit // Repartir S en k partitions foreach tuple s of S do: lire s et l’ajouter à la page tampon h(sj); // Forcer cette page vers le disque au // fur et à mesure qu’elle se remplit //Phase de vérification (‘’Probing’’/’’matching’’) for l=1, …, k do: //Construire une table de hachage en mémoire pour Rl, utilisant h2 foreach tuple r de Rl do: lire r et l’insérer dans la table de hachage de Rl utilisant h2(ri); // Scanner les tuples de Sl et vérifier les tuples correspondants à r dans Rl foreach tuple s de Sl do: lire s et vérifier la table de hachage de Rl en utilisant h2(sj); pour tout tuple correspondant r dans Rl, sortir <r,s>; réinitialiser la table de hachage pour préparer la prochaine partition; 4

Observations sur le Join à Hachage Le #partitions k < B-1. B-2 > taille de la plus large partition qui tienne en mémoire. Si la fonction de hachage h ne forme pas des partitions uniformes, quelques unes de ces partitions peuvent être si grandes qu’elles ne tiennent pas en mémoire. Pour résoudre ce problème, l’algorithme de hachage est appliqué récursivement afin d’effectuer le join de ces trop larges partitions de R avec les partitions correspondantes de S. 15

Coût du Join à Hachage Phase de partition: lecture + écriture des deux relations; 2(M+N). Phase de vérification: lecture des deux relations; M+N. Dans notre exemple, nous avons un total de 4500 I/Os. Comparaison du tri-fusion et du hachage: Le hachage peut couter plus si les partitions ne sont pas uniformes. Le hachage est supérieur si la taille des relations diffèrent énormément. D’autres facteurs font la différence (ex. le # de tampons disponible). 16

Conditions plus Générales de Join Égalité impliquant plusieurs attributs (p.ex. R.sid=S.sid AND R.rname=S.sname): Boucles imbriquées avec index: construire un index sur <sid, sname> (si S est interne); voire utiliser un index existant sur sid ou sname. Tri-fusion et hachage: trier / partitionner en utilisant la combinaison des deux colonnes de join. Conditions impliquant des inégalités (p.ex. R.rname < S.sname): Boucles imbriquées avec index: index B+ groupé nécessaire. Tri-fusion et hachage non applicables. Boucles imbriquées à bloc applicables ici!

Résumé Il existe plusieurs algorithmes alternatifs d’évaluation des joins: Boucles imbriquées (plusieurs variantes) Tri-fusion Hachage Leurs performances varient selon les circonstances. Tri-fusion et hachage non applicables en cas de conditions générales. Boucles imbriquées à bloc applicables dans ce cas. La plupart des joins pratiques étant des joins naturels, tri-fusion et hachage seront souvent usuels. 19