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.