22/04/2015© Robert Godin. Tous droits réservés.1 10 Évaluation des requêtes relationnelles n SQL – QUOI n Évaluateur de requêtes du SGBD – COMMENT – en.

Slides:



Advertisements
Présentations similaires
Optimisation SQL Server
Advertisements

L’optimiseur ORACLE L’optimiseur ORACLE suit une approche classique: Génération de plusieurs plans d’exécution. Estimation du coût de chaque plan généré.
Optimisation des requêtes
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : Introduction
Le Concept du programme enregistré
Évaluation des requêtes relationnelles
Évaluation des requêtes relationnelles
Arbre-B+ Hypothèse initiale : clé simple et unique Nœud = bloc.
Introduction Pour concrétiser l’enseignement assisté par ordinateur
Fonctionnalités des SGBD
Witold Litwin Structures physiques Witold Litwin
Optimisation algébrique de requêtes relationnelles
Techniques dindexation Implémentation du modèle relationnel ~ LIF10: Fondements des bases de données relationnelles.
Relations avec les entity beans Michel Buffa UNSA
Optimisation de Requêtes
Optimisation de Requêtes
Le modèle relationnel Des transparents issus de ceux de Ph Rigaux, J Ullman (Stanford), Barry (Bath et Amiens), Godin (UQAM)
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Rappel sur les bases de données et le vocabulaire
Chap 4 Les bases de données et le modèle relationnel
1 Bases de Données Distribuées Chapitre 22, Sections 22.6–22.14.
Juin 2013 – Query memory grants
LA STRUCTURE D'ARBRE-B Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
8 Organisations unidimentionnelles : indexage et hachage
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.

Universté de la Manouba
Cours de Base de Données & Langage SQL
Les concepts et les méthodes des bases de données
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,
OPTIMISATION DE BASE DE DONNEES ORACLE
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le.

Chapitre 5 : Le langage SQL
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Algèbre Relationnelle : Implémentation
Bases de données   J-L Hainaut III. Méthodologie des bases de données [long] 1. Méthodologie des BD5. Conception physique 2. Le modèle Entité-association6.
Jeu de Librairies Virtuelles « DLL » Windows pour la réalisation de programmes informatiques.
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
Créer des packages.
Bases de données fédéréEs hétérogènes
Optimisation de requêtes
1 G. Gardarin Optimisation de Requêtes  1. Introduction  2. Arbres relationnels  3. Restructuration algébrique  4. Modèle de coût  5. Choix du meilleur.
OPTIMISATION Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
Sélection de colonnes (la projection)
ISBN Chapitre 10 L'implémentation des sous- programmes.
1 Initiation aux bases de données et à la programmation événementielle Responsable : Souheib BAARIR. (le sujet de votre .
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
B.Shishedjiev - Modèle relationnel
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
06/05/2015© Robert Godin. Tous droits réservés.1 9 Méthodes multidimentionnelles et représentation d'associations n Méthodes d ’organisation avancées –
07/05/2015© Robert Godin. Tous droits réservés.1 13 Conception dans un contexte relationnel.
02/06/2015© Robert Godin. Tous droits réservés.1 5 Interface entre SQL et un programme n SQL incomplet n Défaut d'impédance (impedance mismatch) – modèle.
 L’information est conservée sous forme de tables  Contient: ◦ Un nom ◦ Une clé primaire ◦ Une liste de colonnes ◦ Les informations/données (sous forme.
Structures de données avancées : Principales structures de fichiers
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,
Traitement et optimisation de requêtes
Plan… -Introduction et motivations : -Qu'est-ce que le traitement de fichiers ? -Terminologie et définitions fondamentales des structures de fichiers :
Bases de données   J-L Hainaut I. Concepts des bases de données 1. Motivation et introduction 5. Les SGBD 2. Concepts des bases de données 3.
10 Évaluation des requêtes relationnelles
6 Évaluation des requêtes relationnelles
Transcription de la présentation:

22/04/2015© Robert Godin. Tous droits réservés.1 10 Évaluation des requêtes relationnelles n SQL – QUOI n Évaluateur de requêtes du SGBD – COMMENT – en fonction du schéma interne

22/04/2015© Robert Godin. Tous droits réservés Concepts de base

22/04/2015© Robert Godin. Tous droits réservés.3 Requête interne

22/04/2015© Robert Godin. Tous droits réservés.4 Schéma interne

22/04/2015© Robert Godin. Tous droits réservés.5 Plan d ’exécution 1

22/04/2015© Robert Godin. Tous droits réservés.6 Plan d ’exécution 2

22/04/2015© Robert Godin. Tous droits réservés.7 Plan d ’exécution 3

22/04/2015© Robert Godin. Tous droits réservés Optimisation statique ou dynamique n Optimisation statique – compilation du plan d ’exécution n à la pré-compilation pour le SQL enchâssé statique n au PREPARE du SQL enchâssé dynamique – plusieurs exécutions n invoque le plan d ’exécution déjà compilé n EXECUTE du SQL enchâssé dynamique – réoptimisation automatique suite à modification de schéma interne? n Optimisation dynamique – ré-optimisation (recompilation) à chaque exécution n EXECUTE IMMEDIATE du SQL enchâssé dynamique

22/04/2015© Robert Godin. Tous droits réservés Décomposition n 1)Analyse syntaxique n 2)Analyse sémantique n 3)Résolution des vues n 4)Simplification syntaxique n 5)Simplification sémantique

22/04/2015© Robert Godin. Tous droits réservés Estimation du coût des opérations physiques n TempsES : temps accès à mémoire secondaire (MS) n TempsUCT – souvent négligeable n TailleMC : espace mémoire centrale n TailleMS : espace mémoire secondaire

22/04/2015© Robert Godin. Tous droits réservés Modèle du coût d'une entrée- sortie en mémoire secondaire n Voir chapitre 7 TempsESBloc = TempsESDisque(TailleBloc) = TempsPosDébut + TempsTrans (TailleBloc) TempsTrans (TailleBloc) = TailleBloc / TauxTransVrac

22/04/2015© Robert Godin. Tous droits réservés Statistiques au sujet des tables

22/04/2015© Robert Godin. Tous droits réservés.13 Statistiques (suite)

22/04/2015© Robert Godin. Tous droits réservés.14 Statistiques (suite)

22/04/2015© Robert Godin. Tous droits réservés.15 Maintien des statistiques par le SGBD n Coût relié à la précision n Mise à jour incrémentale – à chaque mise à jour n Mise à jour en différé – périodes de faible activité – déclenchement contrôlé par ABD n Estimation par échantillonnage – tables très volumineuses n Commande ANALYSE (Oracle) n contrôle du déclenchement n paramètres d ’échantillonnage

22/04/2015© Robert Godin. Tous droits réservés Coût des opérations de base n Algèbre physique n Hypothèses – Néglige effet de l ’antémémoire – Néglige écriture du résultat – TailleLigne < TailleBloc – Sans interruption

22/04/2015© Robert Godin. Tous droits réservés Balayage (BAL) n TempsES (BAL) = B T * TempsTrans + NombrePos * TempsPosDébut

22/04/2015© Robert Godin. Tous droits réservés.18 Exemple : TempsES (BAL Editeur ) n Allocation sérielle sans fragmentation interne n FB Editeur = FBM Editeur = 60 n B Editeur =  N Editeur / FB Editeur  =  50/ 60  = 1 bloc n TempsES (BAL Editeur ) = B Editeur * TempsTrans + NombrePos * TempsPosDébut n TempsES (BAL Editeur ) = 10,1 ms

22/04/2015© Robert Godin. Tous droits réservés.19 Exemple : TempsES (BAL Catégorie ) n Allocation sérielle sans fragmentation interne n FB Catégorie = FBM Catégorie = 40 n B Catégorie =  N Catégorie / FB Catégorie  =  4 000/ 40  = 100 blocs n Meilleur cas : – TempsES (BAL Catégorie ) = B Catégorie * TempsTrans + NombrePos * TempsPosDébut – = 100 * 0,1 ms + 1 * 10 ms = 20 ms n Pire cas : – TempsES (BAL Catégorie ) = 100 * 0,1 ms * 10 ms = ms

22/04/2015© Robert Godin. Tous droits réservés.20 Exemple : TempsES (BAL Livre ) n Allocation sérielle sans fragmentation interne n FB Livre = FBM Livre = 20 n B Livre =  N Livre / FB Livre  =  / 20  = blocs n Meilleur cas : – TempsES (BAL Livre ) = 5,01 secs n Pire cas : – TempsES (BAL Livre ) = 8,42 minutes

22/04/2015© Robert Godin. Tous droits réservés.21 Exemple : TempsES (BAL Livre ) n Arbre-B + primaire sur la clé primaire ISBN n FB Livre =  2/3 FBM Livre  = 13 n B Livre =  N Livre / FB Livre  =  / 13  = blocs n Pire cas (consécutivité des feuilles non assurée) ! – TempsES (BAL Livre ) = B Livre * TempsTrans + NombrePos * TempsPosDébut – = * 0,1ms * 10ms = ms = 12,94 minutes

22/04/2015© Robert Godin. Tous droits réservés Sélection par égalité dans un index arbre-B + primaire (S=IP) n TempsES (S=IP) = – Parcours des niveaux d ’index n (Hauteur I -1) * TempsESBloc + – Parcours des feuilles n  Sel T (CléIndex = Valeur)/ FB T  * TempsESBloc

22/04/2015© Robert Godin. Tous droits réservés.23 Suite n Cas d ’une clé candidate – TempsES (S=IP sur clé candidate) = Hauteur I * TempsESBloc n Estimation de Hauteur I – 1 +  log OrdreMoyenI (Card T (CléIndex) / FB T )  n OrdreMoyen I =  2/3 Ordre I  n FB T =  2/3 FBM T 

22/04/2015© Robert Godin. Tous droits réservés.24 Hauteur d'un index primaire (FBM =20) n Application Maple –

22/04/2015© Robert Godin. Tous droits réservés.25 Index primaire code de la table Catégorie (clé primaire ) n OrdreMoyen I =  2/3 Ordre I  = 66 n FB Catégorie =  2/3 FBM Catégorie  = 26 n Hauteur I = 1 +  log OrdreMoyenI (Card Catégorie (code) / FB Catégorie )  n = 1+  log 66 (4 000 / 26)  = 3 n TempsES (S=IP) = Hauteur I *TempsESBloc = 30,3 ms

22/04/2015© Robert Godin. Tous droits réservés.26 Index primaire sur code de la table Livre (clé étrangère) n OrdreMoyen I =  2/3 Ordre I  = 66 n FB Livre =  2/3 FBM Livre  = 13 n Hauteur I = 1 +  log OrdreMoyenI (Card Livre (code) / FB Livre )  = 3 n FacteurSélectivité Livre (code) = 1/ Card Livre (code) = 1/4 000 n Sel Livre (code = Valeur ) = = /4000 = 250 lignes n TempsES (S=IP) = – (Hauteur I -1) * TempsESBloc +  Sel Livre (code = Valeur)/ FB Livre )  * TempsESBloc – = 2* 10,1 ms +  ( 250/ 13)  * 10,1 ms = 20,2 ms +20 * 10,1 ms = 222,2 ms

22/04/2015© Robert Godin. Tous droits réservés.27 Index primaire sur ISBN de Livre (clé primaire) n OrdreMoyen I =  2/3 Ordre I  = 66 n FB Livre =  2/3 FBM Livre  = 13 n Hauteur I = 1 +  log OrdreMoyenI (Card Livre (ISBN) / FB Livre )  = 4 n TempsES (S=IP) = Hauteur I *TempsESBloc = 40,4 ms

22/04/2015© Robert Godin. Tous droits réservés.28 Comparaison entre le balayage et la sélection par index primaire (N = , FBM =20)

22/04/2015© Robert Godin. Tous droits réservés.29 Comparaison entre le balayage et la sélection par index primaire (OrdreI = 100, FBM =20)

22/04/2015© Robert Godin. Tous droits réservés Taille de l'index primaire n TailleMS(IP) = TailleIndexInterne + B livre – FB T =  2/3 FBM T  – B T =  N T / FB T  – TailleIndexInterne   Card T (CléIndex)/ OrdreMoyen I 

22/04/2015© Robert Godin. Tous droits réservés.31 Index primaire sur code de Livre n FB Livre =  2/3*FBM Livre  = 13 n B Livre =  N Livre / FB Livre  =  / 13  = blocs n TailleIndexInterne   Card Livre (code)/ OrdreMoyen I  = 61 blocs n TailleMS(IP) = TailleIndexInterne + B Livre  blocs – blocs pour allocation sérielle

22/04/2015© Robert Godin. Tous droits réservés Sélection par égalité dans un index arbre-B + secondaire (S=IS)

22/04/2015© Robert Godin. Tous droits réservés.33 Estimation de TempsES (S=IS) n Niveaux d ’index – (Hauteur I -1) * TempsESBloc n Feuilles de l ’index –  Sel T (CléIndex = Valeur)/ OrdreMoyen I  *TempsESBloc n Blocs de l ’organisation primaire – Sel T (CléIndex = Valeur)*TempsESBloc n TempsES (S=IS sur clé candidate) – (Hauteur I +1)*TempsESBloc

22/04/2015© Robert Godin. Tous droits réservés.34 Estimation sans relecture de blocs n Éviter de relire les blocs de données de l ’organisation primaire n Nombre moyen de blocs à lire : –  (1- (1- FacteurSélectivité T (CléIndex)) FB )* B T 

22/04/2015© Robert Godin. Tous droits réservés.35 Estimation de Hauteur I pour index secondaire n Hypothèses – clés répétées – OrdreMoyen = FB n Hauteur I =  log OrdreMoyenI (N T ) 

22/04/2015© Robert Godin. Tous droits réservés.36 Index secondaire code de Livre (clé étrangère) n Hauteur I =  log 66 ( )  = 4 n Sel Livre (code = Valeur )= 250 lignes n TempsES (S=IS) = 595,7 ms n TempsES (S=ISa) = 595,7 ms n TempsES (S=IP) = 222,2 ms

22/04/2015© Robert Godin. Tous droits réservés.37 Index secondaire sur code de Livre (clé étrangère) n Hauteur I =  log 66 ( )  = 4 n Sel Livre (code = Valeur) = lignes n TempsES (S=IS) = ms n TempsES (S=ISa) = ,7 ms n Pire que TempsES (BAL Livre ) = ms

22/04/2015© Robert Godin. Tous droits réservés.38 Index secondaire sur ISBN de Livre (clé primaire) n Hauteur I =  log 66 ( )  = 4 n TempsES (S=IS sur clé candidate) = (Hauteur I +1)*TempsESBloc = 50,5 ms n ~TempsES (S=IP) = Hauteur I *TempsESBloc = 40,4 ms

22/04/2015© Robert Godin. Tous droits réservés.39 Comparaison entre le balayage et la sélection par index secondaire (N = , FBM =20)

22/04/2015© Robert Godin. Tous droits réservés.40 Comparaison entre le balayage et la sélection par index secondaire (OrdreI = 100, FBM =20)

22/04/2015© Robert Godin. Tous droits réservés.41 Taille de l'index secondaire n Index secondaire code de Livre (clé étrangère) n TailleMS(IS) =  N Livre / OrdreMoyen I  = blocs – ~ 1/3 taille de la table ! n TailleMS(IS) (15 152) + B Livre (50 000)< TailleMS(IP) (76 985)

22/04/2015© Robert Godin. Tous droits réservés Sélection par intervalle dans un index arbre-B + primaire (S>IP) n ~ clé non unique n CléIndex  [Valeur 1..Valeur 2 ] n TempsES (S>IP) = – (Hauteur I -1) * TempsESBloc + –  Sel T (CléIndex  [Valeur 1..Valeur 2 ])/ FB T  * TempsESBloc

22/04/2015© Robert Godin. Tous droits réservés.43 Index primaire sur code de la table Livre (clé étrangère) n OrdreMoyen I =  2/3 Ordre I  = 66 n FB Livre =  2/3 FBM Livre  = 13 n Hauteur I = 3 n TempsES (S>IP) = 3 908,7 ms

22/04/2015© Robert Godin. Tous droits réservés Sélection par intervalle dans un index arbre-B + secondaire (S>IS) n ~ clé non unique

22/04/2015© Robert Godin. Tous droits réservés Sélection par égalité avec hachage (S=H) n Hachage statique + chaînage n TempsES (S=H) =  N T /( TH T * FB T )  * TempsESBloc

22/04/2015© Robert Godin. Tous droits réservés.46 Hachage sur ISBN de Livre (clé primaire) n Hypothèse ~ idéale – TR = 80% – FB Livre = 0,8* FBM Livre = 16 – TH Livre =  N Livre / FB Livre  = blocs – pas de débordements n TempsES (S=H) =  /( * 16)  * 11ms = 10,1 ms n TempsES (S=IP) = Hauteur I *TempsESBloc = 40,4 ms

22/04/2015© Robert Godin. Tous droits réservés.47 Hachage sur code de Livre (clé étrangère) n Hypothèse ~ idéale – TH Livre = Card Livre (code) = – FB Livre = FBM Livre = 20 n TempsES (S=H) =  /( * 20)  * 11ms = 131,1 ms n TempsES (S=IP) = 222, ms

22/04/2015© Robert Godin. Tous droits réservés Taille de l'organisation par hachage n TailleMS(S=H) =  N T /FB T  n Hachage sur ISBN de Livre (clé primaire) – Hypothèse ~ idéale – TailleMS(S=H) = TH Livre =  N Livre / FB Livre  = blocs

22/04/2015© Robert Godin. Tous droits réservés.49 Sélection par clé composée n Hypothèse de distribution indépendante n FacteurSélectivité T (C 1 = V 1 et C 2 = V 2 et… et C n = V n ) = FacteurSélectivité T (C 1 )* FacteurSélectivité T (C 2 ) * …* FacteurSélectivité T (C n )

22/04/2015© Robert Godin. Tous droits réservés.50 Index secondaire sur clé composée {code, annéeParution} de Livre n Hauteur I =  log 33 ( )  = 4 n FacteurSélectivité Livre (code = V 1 et annéeParution = V 2 ) = – FacteurSélectivité Livre (code)* FacteurSélectivité Livre (annéeParution) – = 1/Card Livre (code) * 1/Card Livre (annéeParution) = 1/ n Sel Livre (code = V 1 et annéeParution = V 2 )= N Livre / = 5 lignes n TempsES (S=IS) = (Hauteur I - 1) * TempsESBloc + n  Sel Livre (code = V 1 et annéeParution = V 2 )/ OrdreMoyen I  *TempsESBloc + n Sel Livre (code = V 1 et annéeParution = V 2 ) * TempsESBloc n TempsES (S=IS) = 3 * 10,1 ms +  5/ 33  *10,1 ms + 5 * 10,1 ms = 90,9 ms

22/04/2015© Robert Godin. Tous droits réservés.51 Index secondaire sur clé composée {code, annéeParution} de Livre n Hauteur I =  log 33 ( )  = 4 n TempsES (S=IS) = (Hauteur I - 1) * TempsESBloc + –  Sel Livre ({code, annéeParution}  [{unCode, min}.. {unCode, max}])/ OrdreMoyen I  *TempsESBloc + – Sel Livre ({code, annéeParution}  [{unCode, min}.. {unCode, max}]) * TempsESBloc n FacteurSélectivité Livre ({code, annéeParution}  [{unCode, min}.. {unCode, max}]) ~ FacteurSélectivité Livre (code) = 1/4 000 n TempsES (S=IS) = 2 595,7 ms (idem index sur code seul)

22/04/2015© Robert Godin. Tous droits réservés.52 Index secondaire sur clé composée {code, titre} de Livre n Hauteur I =  log 6 ( )  = 8 n TempsES (S=IS) = 3 019,9 ms

22/04/2015© Robert Godin. Tous droits réservés.53 ORGANISATIONS HÉTÉROGÈNES n Adapter les formules – facteur de blocage doit tenir compte de la présence de plusieurs tables

22/04/2015© Robert Godin. Tous droits réservés.54 TRI D'UNE TABLE (TRI) n Utilité – jointure par tri-fusion – élimination des doubles (DISTINCT) – opérations d ’agrégation (GROUP BY) – résultats triés (ORDER BY) n Tri externe si M est petit – tri-fusion

22/04/2015© Robert Godin. Tous droits réservés.55 Tri fusion externe n Étape tri – nombre de groupes =  B T /M  =  12 /3  = 4 – Coût = 2 * (  B T /M  * TempsPosDébut + B T * TempsTrans) = 82,4 ms

22/04/2015© Robert Godin. Tous droits réservés.56 Étape fusion n Coût des passes de fusion – = B T *(2*  log M-1 (B T /M)  -1) * TempsESBloc – = 12*(2*  log 2 (12 /3)  -1) *11ms = 363,6 ms

22/04/2015© Robert Godin. Tous droits réservés.57 Coût total du tri-fusion externe n TempsES (TRI) = – 2*(  B T /M  * TempsPosDébut + B T *TempsTrans) + B T *(2*  log M-1 (B T /M)  -1) * TempsESBloc – = 82,4 ms + 363,6 ms = 446 ms

22/04/2015© Robert Godin. Tous droits réservés.58 Tri de Livre n Allocation sérielle sans fragmentation interne n M = 50 n TempsES (TRI) = 25,75 mins

22/04/2015© Robert Godin. Tous droits réservés.59 Estimation du coût d'un tri- fusion externe (FBM = 20)

22/04/2015© Robert Godin. Tous droits réservés.60 SÉLECTION CONJONCTIVE PAR INTERSECTION (S  ) n Index I1 sur code n Index I2 sur annéeParution n TempsES(S  ) = – TempsES(Extraction de la liste des références de I1) + – TempsES(Extraction de la liste des références de I2) + – TempsES(Lecture des blocs de données)

22/04/2015© Robert Godin. Tous droits réservés.61 Suite n TempsES(Extraction de la liste des références de I1) = – (Hauteur I1 - 1) * TempsESBloc +  Sel Livre (code = Valeur)/ OrdreMoyen I  *TempsESBloc = 70,7 ms n TempsES(Extraction de la liste des références de I2) = – (Hauteur I2 - 1) * TempsESBloc +  Sel Livre (annéeParution = Valeur)/ OrdreMoyen I  *TempsESBloc = 3 100,7 ms n TempsES(Lecture des blocs de données) = – Sel Livre (code = V 1 et annéeParution = V 2 )*TempsESBloc = 50,5 ms n TempsES(S  ) = 3 221,9ms – > TempsES (S=IS pour index I1) = 595,7 ms

22/04/2015© Robert Godin. Tous droits réservés.62 Si Card Livre (annéeParution) = 100 n TempsES(S  ) = 1686,7 ms n < TempsES (S=IS pour index I1) = 2 595,7 ms

22/04/2015© Robert Godin. Tous droits réservés.63 SÉLECTION DISJONCTIVE PAR UNION (S  ) n FacteurSélectivité T (C 1 = V 1 ou C 2 = V 2 ou… ou C n = V n ) = – 1-((1-FacteurSélectivité T (C 1 ))* (1-FacteurSélectivité T (C 2 )) * …* (1- FacteurSélectivité T (C n )))

22/04/2015© Robert Godin. Tous droits réservés.64 OPÉRATIONS DE JOINTURE n Cas de deux tables R   S n Extension directe à d ’autres cas – union, intersection, jointure externe,...

22/04/2015© Robert Godin. Tous droits réservés.65 Jointure par boucles imbriquées n Boucles imbriquées par lignes (BI) n TempsES (BI) = – B R * TempsESBloc + N R * (B S * TempsTrans + TempsPosDébut) n Meilleur cas (antémémoire suffisamment grande) : – TempsES (BI) = TempsES (BAL R ) + TempsES (BAL S ) = – (B R + B S ) * TempsTrans + 2*TempsPosDébut

22/04/2015© Robert Godin. Tous droits réservés.66 BI : Livre  Catégorie n R=Livre et S=Catégorie – TempsES (BI) = ms n R = Catégorie et S = Livre – TempsES (BI) = ms n Meilleur cas (sans relecture) – TempsES (BI) = ms

22/04/2015© Robert Godin. Tous droits réservés.67 Boucles imbriquées par blocs (BIB) n TempsES (BIB) = – B R * TempsESBloc + – B R * (B S * TempsTrans + TempsPosDébut)

22/04/2015© Robert Godin. Tous droits réservés.68 BIB: Livre  Catégorie n R=Livre et S=Catégorie – TempsES (BIB) = ms n R = Catégorie et S = Livre – TempsES (BIB) = ms

22/04/2015© Robert Godin. Tous droits réservés.69 Boucles imbriquées multi-blocs (BIM) n TempsES (BIM) = – B R * TempsTrans +  B R /(M-2)  * TempsPosDébut +  B R /(M-2)  * (B S * TempsTrans + TempsPosDébut)

22/04/2015© Robert Godin. Tous droits réservés.70 BIM: Livre  Catégorie n M = 50 n R=Livre et S=Catégorie – TempsES (BIM) = 36,26 secs n R = Catégorie et S = Livre – TempsES (BIM) = 15,07 secs

22/04/2015© Robert Godin. Tous droits réservés.71 Estimation du coût de la jointure (R ê S) par boucles imbriquées multi-blocs (M = 10, FBM = 20 pour les deux tables) en fonction des tailles (NS et NR) des deux tables

22/04/2015© Robert Godin. Tous droits réservés Jointure par boucles imbriquées avec index sur la table interne (BII) n TempsES (BII) = – B R * TempsESBloc + – N R * TempsES (Sélection par index)

22/04/2015© Robert Godin. Tous droits réservés.73 BII: Livre  Catégorie n Cas des index primaires n R=Livre et S=Catégorie – TempsES (BII) = B Livre * TempsESBloc + N Livre * TempsES(S=IP Catégorie pour l'index primaire sur code) = 8,56 hrs n R = Catégorie et S = Livre – TempsES (BII) = B Catégorie * TempsESBloc + N Catégorie * TempsES(S=IP Livre pour l'index primaire sur code) = 14,83 mins

22/04/2015© Robert Godin. Tous droits réservés.74 Contexte avantageux pour BII n Jointure sélective n Peu de mémoire vive

22/04/2015© Robert Godin. Tous droits réservés.75 Comparaison entre la boucle imbriquée multi-blocs et la boucle imbriquée avec index primaire (NS = et que FBM = 20)

22/04/2015© Robert Godin. Tous droits réservés Jointure par boucles imbriquées avec hachage sur la table interne (BIH) n TempsES (BIH) = – B R * TempsESBloc + – N R * TempsES(Sélection par hachage)

22/04/2015© Robert Godin. Tous droits réservés.77 BIH: Livre  Catégorie n R=Livre et S=Catégorie – TempsES (BIH) = B Livre * TempsESBloc + N Livre * TempsES(S=H Catégorie pour hachage sur code) = 2,94 hrs n R = Catégorie et S = Livre – TempsES (BIH) = B Catégorie * TempsESBloc + N Catégorie * TempsES(S=H Livre pour hachage sur code)= 8,77 mins

22/04/2015© Robert Godin. Tous droits réservés Jointure par tri-fusion (JTF) n TempsES (JTF) = TempsES (TRI R ) + TempsES (TRI S ) + 2*(B R + B s ) * TempsESBloc

22/04/2015© Robert Godin. Tous droits réservés.79 JTF: Livre  Catégorie n M = 50 n TempsES (JTF) = – TempsES (TRI Livre ) + TempsES (TRI Catégorie ) + 2*(B Livre + B Catégorie ) * TempsESBloc = ms – >> TempsES (BIM) = ms ( R = Catégorie )

22/04/2015© Robert Godin. Tous droits réservés.80 Si taille comparable n M = 50 – TempsES (JTF) = ms – < TempsES (BIM) = ms n M = 10 – TempsES (JTF) = ms – << TempsES (BIM) = ms

22/04/2015© Robert Godin. Tous droits réservés.81 Jointure par hachage (JH) n Égalité seulement n 1- Partition des tables ( Si h  [0..n-1], M ≥ n)

22/04/2015© Robert Godin. Tous droits réservés.82 Jointure par hachage (suite) n Jointure par itération sur les parties n TempsES (JH) = – TempsES (BAL R ) + TempsES (BAL s ) + – 2 * (B R + B s ) *TempsESBloc Hypothèse : taille de R < taille de S taille de R i  M blocs

22/04/2015© Robert Godin. Tous droits réservés Hachage récursif n Si M < R i (~ B R /M ) – hacher récursivement – ~  log M (B R )-1  passes n ne dépend que de la plus petite table n TempsES (JH) = – TempsES (BAL R ) + TempsES (BAL s ) + – 2 * (B R + B s ) *  log M (B R )-1  *TempsESBloc n Si B R  M – TempsES (JH) = TempsES (BAL R ) + TempsES (BAL s )

22/04/2015© Robert Godin. Tous droits réservés.84 JH: Livre  Catégorie n R = Catégorie (la plus petite table) n M = 50 n TempsES (JH) = ms – > TempsES (BIM) ( R = Catégorie ) – < TempsES (JTF)

22/04/2015© Robert Godin. Tous droits réservés.85 Si taille comparable n R = Catégorie (la plus petite table) n M = 50 n TempsES (JH) = ms – << TempsES (BIM) = ms ( R = Catégorie )

22/04/2015© Robert Godin. Tous droits réservés.86 Comparaison entre la jointure par hachage et par tri-fusion (NS = et que FBM = 20)

22/04/2015© Robert Godin. Tous droits réservés Pré-jointure par une organisation hétérogène (PJ) n Organisation hétérogène – sériel par grappe – index primaire – hachage n TempsES (PJ) ~ – TempsES (BAL R ) + TempsES (BAL s ) – meilleur cas n pas de fragmentation interne...

22/04/2015© Robert Godin. Tous droits réservés.88 PJ: Livre  Catégorie n TempsES (PJ) = 5 030ms – meilleur cas

22/04/2015© Robert Godin. Tous droits réservés.89 Comparaison des méthodes de jointure n BIM – une des deux tables est petite n JTF – 2 grandes tables n nombre de passes de tri dépend de la plus grande table – ordre intéressant n JH – 2 grandes tables – nombre de passes ne dépend que de la plus petite table n BII ou BIH – utilisation partielle d ’une des deux tables n PJ – optimal pour jointure si peu de fragmentation interne – pénalise opérations sur une table

22/04/2015© Robert Godin. Tous droits réservés AGRÉGATION, ÉLIMINATION DES DOUBLES, OPÉRATIONS ENSEMBLISTES n Principe général – appariement de lignes sur valeurs communes n Adapter les algorithmes de jointure et estimation de coût

22/04/2015© Robert Godin. Tous droits réservés Optimisation n Chercher le meilleur plan d ’exécution? – coût excessif n Solution approchée à un coût raisonnable – Générer les alternatives n heuristiques – Choisir la meilleure n estimation approximative du coût

22/04/2015© Robert Godin. Tous droits réservés Plans d'exécutions équivalents n Plusieurs arbres algébriques équivalents n etc.

22/04/2015© Robert Godin. Tous droits réservés.93 Règles d ’équivalences de l ’algèbre relationnelle n Eclatement d'une sélection conjonctive (SE) –  e1 ET e2 (T) =  e1 (  e2 (T)) n Commutativité de la sélection (SC) –  e1 (  e2 (T)) =  e2 (  e1 (T)) n Elimination des projections en cascades (PE) –  liste1 (  liste2 (T)) =  liste1 (T) n Commutativité de la jointure (JC) – T 1  T 2 = T 2  T 1 n Associativité de la jointure (JA) – T 1  (T 2  T 3 ) = (T 1  T 2 )  T 3

22/04/2015© Robert Godin. Tous droits réservés.94 Suite n Commutativité restreinte de la sélection et de la jointure (CSJ) –  e (T 1  T 2 ) =  e (T 1 )  T 2 n si l'expression de sélection e ne contient que des colonnes de T 1 n Commutativité restreinte de la projection et de la sélection (CPS) –  listeColonnes (  e (T)) =  listeColonnes (  e (  listeColonnes  colonnes de e T)) n Commutativité restreinte de la projection et de la jointure (CPJ) –  listeColonnes (T 1  T 2 ) = –  listeColonnes (  listeColonnes  colonnes de T1 (T 1 )   listeColonnes  colonnes de T2 (T 2 )) n etc.

22/04/2015© Robert Godin. Tous droits réservés.95 Plusieurs plans d ’exécution pour un arbre algébrique n Pour chaque opération logique – plusieurs choix d ’opérations physiques – etc.

22/04/2015© Robert Godin. Tous droits réservés Mise en œuvre du plan d'exécution n Matérialisation des tables intermédiaires n Pipeline

22/04/2015© Robert Godin. Tous droits réservés MISE EN ŒUVRE PAR MATÉRIALISATION

22/04/2015© Robert Godin. Tous droits réservés MISE EN ŒUVRE PAR PIPELINE

22/04/2015© Robert Godin. Tous droits réservés.99 Réalisation des opérations par itérateur n Interface standard – Ouvrir n déclenche l ’opération – Suivant n produit la ligne suivante – Fermer n termine l ’opération n Certaines opérations moins adaptées – ex: Ouvrir pour le tri-fusion n tri des deux tables…

22/04/2015© Robert Godin. Tous droits réservés Heuristiques d'optimisation n Élaguer l ’espace des solutions – solutions non applicables n Exemples d ’heuristiques – sélections le plus tôt possible – projections le plus tôt possible – arbres biaisés à gauche seulement – les jointures plus restrictives en premier – jointures supportées par index, hachage ou grappe en premier

22/04/2015© Robert Godin. Tous droits réservés.101 Heuristique : arbres biaisés à gauche seulement n Jointure de n tables – (2*(n-1))!/(n-1)! ordres différents pour n tables – n! biaisés à gauche

22/04/2015© Robert Godin. Tous droits réservés Optimisation heuristique n Oracle – mode RULE

22/04/2015© Robert Godin. Tous droits réservés Optimisation par coût n Minimiser le coût n Stratégies – programmation dynamique – amélioration itérative – recuit simulé – algorithme génétique

22/04/2015© Robert Godin. Tous droits réservés ESTIMATION DU COÛT D'UN PLAN D'EXÉCUTION TempsES(Plan avec pipeline) = TempsES (JTF Livre  Catégorie ) = ms

Estimation de TempsES(Ecriture de Livre  Catégorie) n FB Livre  Catégorie =  TailleBloc/TailleLigne Livre  Catégorie  =  TailleBloc/(TailleLigne Livre + TailleLigne Catégorie )  n =  TailleBloc/( TailleBloc/FB Livre + TailleBloc/FB Catégorie )  n =  ( FB Livre * FB Catégorie )/( FB Livre + FB Catégorie )  = 13 n N Livre  Catégorie = N Livre = n B Livre  Catégorie =  N Livre  Catégorie /FB Livre  Catégorie  =  1,000,000/13  = n TempsES(Ecriture de Livre  Catégorie) = * TempsESBloc = ,4 ms 22/04/2015© Robert Godin. Tous droits réservés.105

Estimation du temps de la sélection (ISBN = …) par balayage de la table intermédiaire matérialisée Livre  Catégorie n TempsES(Balayage Livre  Catégorie ) = n  B Livre  Catégorie /M  * TempsPosDébut + B Livre  Catégorie *TempsTrans n =  /50  * 10ms *0,1ms = ,4 ms 22/04/2015© Robert Godin. Tous droits réservés.106

22/04/2015© Robert Godin. Tous droits réservés.107 Autre exemple TempsES(Plan avec pipeline) = TempsES(S=IS pour index sur ISBN) + N  ISBN= (Livre) * TempsES(S=IS sur code de Catégorie) = 50,5 ms + 30,3 ms = 80,8 ms

22/04/2015© Robert Godin. Tous droits réservés ESTIMATION DE LA TAILLE DU RÉSULTAT D'UNE OPÉRATION n Taille d'une sélection –  Sel T (Expression de sélection)/ FBM T  blocs n Taille d'une projection – N  liste(T) = N T si contient une clé candidate – N  C(T) = Card T (C) pour une colonne – N  C1,C2,…,Cn(T) = k(1-(1- 1/k) N T ) n k =  i=1,..,n Card T (C i ) n Taille d'une jointure naturelle – N R  S = N R * N S / maximum(Card R (cléJointure), Card S (cléJointure))

22/04/2015© Robert Godin. Tous droits réservés.109 Exemple d ’estimation de la taille d ’une projection n k =  i=1,..,n Card T (C i ) n = Card Livre (code) * Card Livre (annéeParution) n = * 50 = n N  code,annéeParution(T) = k(1-(1- 1/k) N ) n = lignes (en arrondissant)

22/04/2015© Robert Godin. Tous droits réservés VARIATIONS DU MODÈLE D'ESTIMATION DU COÛT n Simplification – nombre de blocs à transférer n Jointures – taille du résultat n Contexte réparti – seulement coût de transfert entre sites n Hypothèses sur distributions n Coût UCT

22/04/2015© Robert Godin. Tous droits réservés Contrôle du processus d'optimisation n Cas Oracle – outils n EXPLAIN PLAN n SQL Trace n SQL Analyse (Enterprise Manager Tuning Pack) n Oracle EXPERT

22/04/2015© Robert Godin. Tous droits réservés.112 Indices (hints)

22/04/2015© Robert Godin. Tous droits réservés.113 Paramètre OPTIMIZER_MODE n COST (statistique): minimise le coût estimé – besoin de statistiques (ANALYSE) – mieux mais plus cher – ALL_ROWS n minimise le temps total (plutôt MERGE JOIN) – FIRST_ROWS n minimise temps réponse (plutôt NESTED LOOPS) n RULE (heuristique) – appelé à disparaître ?

22/04/2015© Robert Godin. Tous droits réservés.114 Changement du mode pour une session n ALTER SESSION SET OPTIMIZER_GOAL = – RULE | ALL_ROWS | FIRST_ROWS | CHOOSE

22/04/2015© Robert Godin. Tous droits réservés.115 Exemple d ’utilisation de EXPLAIN PLAN SQL> start utlxplan.sql Pour créer la table plan_table Table created.... SQL> run 1 explain plan 2 set statement_id = 'com' 3 for select * from commandes, lignes_de_commande 4* where no_commande = commande_no_commande Explained.

22/04/2015© Robert Godin. Tous droits réservés.116 Suite SQL> run 1 SELECT LPAD(' ',2*(LEVEL-1))||operation||' '||options 2 ||' '||object_name 3 ||' '||DECODE(id, 0, 'Cost = '||position) "Query Plan" 4 FROM plan_table 5 START WITH id = 0 AND statement_id = 'com' 6* CONNECT BY PRIOR id = parent_id AND statement_id ='com' Query Plan SELECT STATEMENT Cost = NESTED LOOPS TABLE ACCESS FULL LIGNES_DE_COMMANDE TABLE ACCESS BY ROWID COMMANDES INDEX UNIQUE SCAN COMMANDE_PK

22/04/2015© Robert Godin. Tous droits réservés.117 SQL Analyse

22/04/2015© Robert Godin. Tous droits réservés.118 Affichage du plan d ’exécution selon un mode particulier

22/04/2015© Robert Godin. Tous droits réservés.119 Consommation de ressources

22/04/2015© Robert Godin. Tous droits réservés.120 Cas DB2 n Documentation – n Paramètre OPTIMIZATION CLASS – Classe 0 n algorithme vorace d ’énumération des ordres de jointure n boucles imbriquées seulement – Classe 1 n jointure par tri-fusion – Classe 2 n optimisation de l ’accès par index secondaire par manipulation des listes de références n jointures en étoile – Classes 3 n algorithme de programmation dynamique n réécritures des SELECT imbriqués en jointures – Classe 5 n statistiques non uniformes (histogrammes) – Classe 7 n examine plus de plans – Classe 9 n considère toutes les alternatives

22/04/2015© Robert Godin. Tous droits réservés.121 Spécification du OPTIMIZATION CLASS n SQL statique – spécifié dans PREP et BIND n SQL dynamique – SET CURRENT QUERY OPTIMIZATION = n

22/04/2015© Robert Godin. Tous droits réservés.122 Outils EXPLAIN n Données dans tables « explain » n db2expln – consulter le plan SQL compilé (statique) n dynexpln – cas dynamique n génère statique et appelle db2expln n Visual Explain – outil graphique pour consulter les tables explain

22/04/2015© Robert Godin. Tous droits réservés.123 Génération des données dans les tables explain n SQL statique – EXPLAIN ALL ou EXPLAIN YES des commandes BIND ou PREP command – ou EXPLAIN SQL dans le source n SQL dynamique – EXPLAIN PLAN FOR – CURRENT EXPLAIN MODE n EXPLAIN – pas d ’exécution n RECOMMEND INDEXES – index recommendés dans ADVISE_INDEX n EVALUATE INDEXES – teste les index fournis dans ADVISE_INDEX par l ’utilisateur

22/04/2015© Robert Godin. Tous droits réservés.124 Outil conseiller n SQL Advise – suggère configuration d ’index n INPUT – Table ADVISE_WORKLOAD n requêtes SQL + fréquences

22/04/2015© Robert Godin. Tous droits réservés.125 Exemple d ’utilisation du Advise tiré de « IBM DB2 Universal Database Administration Guide: Performance Ve r s i o n 6 SC , URL: ftp://ftp.software.ibm.com/ps/products/db2/info/vr6/pdf/letter/db2d2e60.pdf » Créer fichier “sample.sql”: --#SET FREQUENCY 100 select count(*) from sales where region = ?; --#SET FREQUENCY 3 select projno, sum(comm) tot_comm from employee, emp_act where employee.empno = emp_act.empno and employee.job=‘ DESIGNER ’ group by projno order by tot_comm desc; --#SET FREQUENCY 50 select * from sales where sales_date = ?; Exécuter la commande: $ db2advis -d sample -i sample.sql -t 0 found [3] SQL statements from the input file Calculating initial cost (without recommmended indexes) [ ] timerons Initial set of proposed indexes is ready. Found maximum set of [2] recommended indexes Cost of workload with all indexes included [ ] timerons cost without index [0] is [ ] timerons. Derived benefit is [ ] cost without index [1] is [ ] timerons. Derived benefit is [ ] total disk space needed for initial set [2] MB total disk space constrained to [-1] MB 2 indexes in current solution [ ] timerons (without indexes) [ ] timerons (with current solution) [%52.20] improvement Trying variations of the solution set. Time elapsed. LIST OF RECOMMENDED INDEXES =========================== index[1], 1MB CREATE INDEX WIZ119 ON VALENTIN.SALES (SALES_DATE DESC, SALES_PERSON DESC) index[2], 1MB CREATE INDEX WIZ63 ON VALENTIN.SALES (REGION DESC) =========================== Index Advisor tool is finished.