Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parBernadette Guillot Modifié depuis plus de 9 années
1
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
2
22/04/2015© Robert Godin. Tous droits réservés.2 10.1 Concepts de base
3
22/04/2015© Robert Godin. Tous droits réservés.3 Requête interne
4
22/04/2015© Robert Godin. Tous droits réservés.4 Schéma interne
5
22/04/2015© Robert Godin. Tous droits réservés.5 Plan d ’exécution 1
6
22/04/2015© Robert Godin. Tous droits réservés.6 Plan d ’exécution 2
7
22/04/2015© Robert Godin. Tous droits réservés.7 Plan d ’exécution 3
8
22/04/2015© Robert Godin. Tous droits réservés.8 10.1.1 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
9
22/04/2015© Robert Godin. Tous droits réservés.9 10.2 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
10
22/04/2015© Robert Godin. Tous droits réservés.10 10.3 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
11
22/04/2015© Robert Godin. Tous droits réservés.11 10.3.1 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
12
22/04/2015© Robert Godin. Tous droits réservés.12 10.3.2 Statistiques au sujet des tables
13
22/04/2015© Robert Godin. Tous droits réservés.13 Statistiques (suite)
14
22/04/2015© Robert Godin. Tous droits réservés.14 Statistiques (suite)
15
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
16
22/04/2015© Robert Godin. Tous droits réservés.16 10.3.3 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
17
22/04/2015© Robert Godin. Tous droits réservés.17 10.3.3.1 Balayage (BAL) n TempsES (BAL) = B T * TempsTrans + NombrePos * TempsPosDébut
18
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
19
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 + 100 * 10 ms = 1 010 ms
20
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 = 1 000 000/ 20 = 50 000 blocs n Meilleur cas : – TempsES (BAL Livre ) = 5,01 secs n Pire cas : – TempsES (BAL Livre ) = 8,42 minutes
21
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 = 1 000 000/ 13 = 76 924 blocs n Pire cas (consécutivité des feuilles non assurée) ! – TempsES (BAL Livre ) = B Livre * TempsTrans + NombrePos * TempsPosDébut – = 76 924* 0,1ms + 76 924 * 10ms = 848 164 ms = 12,94 minutes
22
22/04/2015© Robert Godin. Tous droits réservés.22 10.3.3.2 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
23
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
24
22/04/2015© Robert Godin. Tous droits réservés.24 Hauteur d'un index primaire (FBM =20) n Application Maple – http://www.labunix.uqam.ca/~godin_r/SiteWebGodin2012/Chap6Formules.mws http://www.labunix.uqam.ca/~godin_r/SiteWebGodin2012/Chap6Formules.mws
25
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
26
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 ) = = 1 000 000/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
27
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
28
22/04/2015© Robert Godin. Tous droits réservés.28 Comparaison entre le balayage et la sélection par index primaire (N = 1 000 000, FBM =20)
29
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)
30
22/04/2015© Robert Godin. Tous droits réservés.30 10.3.3.2.1 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
31
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 = 1 000 000/ 13 = 76 924 blocs n TailleIndexInterne Card Livre (code)/ OrdreMoyen I = 61 blocs n TailleMS(IP) = TailleIndexInterne + B Livre 76 985 blocs – 50 000 blocs pour allocation sérielle
32
22/04/2015© Robert Godin. Tous droits réservés.32 10.3.3.3 Sélection par égalité dans un index arbre-B + secondaire (S=IS)
33
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
34
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
35
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 )
36
22/04/2015© Robert Godin. Tous droits réservés.36 Index secondaire code de Livre (clé étrangère) n Hauteur I = log 66 (1 000 000) = 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
37
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 (1 000 000) = 4 n Sel Livre (code = Valeur) = 50 000 lignes n TempsES (S=IS) = 512 686 ms n TempsES (S=ISa) = 331 653,7 ms n Pire que TempsES (BAL Livre ) = 5 010 ms
38
22/04/2015© Robert Godin. Tous droits réservés.38 Index secondaire sur ISBN de Livre (clé primaire) n Hauteur I = log 66 (1 000 000) = 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
39
22/04/2015© Robert Godin. Tous droits réservés.39 Comparaison entre le balayage et la sélection par index secondaire (N = 1 000 000, FBM =20)
40
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)
41
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 = 15 152 blocs – ~ 1/3 taille de la table ! n TailleMS(IS) (15 152) + B Livre (50 000)< TailleMS(IP) (76 985)
42
22/04/2015© Robert Godin. Tous droits réservés.42 10.3.3.4 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
43
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
44
22/04/2015© Robert Godin. Tous droits réservés.44 10.3.3.6 Sélection par intervalle dans un index arbre-B + secondaire (S>IS) n ~ clé non unique
45
22/04/2015© Robert Godin. Tous droits réservés.45 10.3.3.8 Sélection par égalité avec hachage (S=H) n Hachage statique + chaînage n TempsES (S=H) = N T /( TH T * FB T ) * TempsESBloc
46
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 = 62 500 blocs – pas de débordements n TempsES (S=H) = 1 000 000/( 62 500* 16) * 11ms = 10,1 ms n TempsES (S=IP) = Hauteur I *TempsESBloc = 40,4 ms
47
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) = 4 000 – FB Livre = FBM Livre = 20 n TempsES (S=H) = 1 000 000/( 4 000 * 20) * 11ms = 131,1 ms n TempsES (S=IP) = 222, ms
48
22/04/2015© Robert Godin. Tous droits réservés.48 10.3.3.8.1 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 = 62 500 blocs
49
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 )
50
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 (1 000 000) = 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/200 000 n Sel Livre (code = V 1 et annéeParution = V 2 )= N Livre / 200 000 = 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
51
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 (1 000 000) = 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)
52
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 (1 000 000) = 8 n TempsES (S=IS) = 3 019,9 ms
53
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
54
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
55
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
56
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
57
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
58
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
59
22/04/2015© Robert Godin. Tous droits réservés.59 Estimation du coût d'un tri- fusion externe (FBM = 20)
60
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)
61
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
62
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
63
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 )))
64
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,...
65
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
66
22/04/2015© Robert Godin. Tous droits réservés.66 BI : Livre Catégorie n R=Livre et S=Catégorie – TempsES (BI) = 20 505 000 ms n R = Catégorie et S = Livre – TempsES (BI) = 20 041 010 ms n Meilleur cas (sans relecture) – TempsES (BI) = 5 030 ms
67
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)
68
22/04/2015© Robert Godin. Tous droits réservés.68 BIB: Livre Catégorie n R=Livre et S=Catégorie – TempsES (BIB) = 1 505 000 ms n R = Catégorie et S = Livre – TempsES (BIB) = 502 010 ms
69
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)
70
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
71
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
72
22/04/2015© Robert Godin. Tous droits réservés.72 10.3.3.14.2 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)
73
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
74
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
75
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 = 1 000 000 et que FBM = 20)
76
22/04/2015© Robert Godin. Tous droits réservés.76 10.3.3.14.3 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)
77
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
78
22/04/2015© Robert Godin. Tous droits réservés.78 10.3.3.14.4 Jointure par tri-fusion (JTF) n TempsES (JTF) = TempsES (TRI R ) + TempsES (TRI S ) + 2*(B R + B s ) * TempsESBloc
79
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 = 2 558 090 ms – >> TempsES (BIM) = 15 070 ms ( R = Catégorie )
80
22/04/2015© Robert Godin. Tous droits réservés.80 Si taille comparable n M = 50 – TempsES (JTF) = 5 110 000ms – < TempsES (BIM) = 5 235 840ms n M = 10 – TempsES (JTF) = 5 586 000 ms – << TempsES (BIM) = 6 276 000 ms
81
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)
82
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
83
22/04/2015© Robert Godin. Tous droits réservés.83 10.3.3.14.5.1 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 )
84
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) = 1 017 050 ms – > TempsES (BIM) ( R = Catégorie ) – < TempsES (JTF)
85
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) = 4 050 020 ms – << TempsES (BIM) = 5 235 840 ms ( R = Catégorie )
86
22/04/2015© Robert Godin. Tous droits réservés.86 Comparaison entre la jointure par hachage et par tri-fusion (NS = 1 000 000 et que FBM = 20)
87
22/04/2015© Robert Godin. Tous droits réservés.87 10.3.3.14.6 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...
88
22/04/2015© Robert Godin. Tous droits réservés.88 PJ: Livre Catégorie n TempsES (PJ) = 5 030ms – meilleur cas
89
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
90
22/04/2015© Robert Godin. Tous droits réservés.90 10.3.3.15 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
91
22/04/2015© Robert Godin. Tous droits réservés.91 10.4 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
92
22/04/2015© Robert Godin. Tous droits réservés.92 10.4.1 Plans d'exécutions équivalents n Plusieurs arbres algébriques équivalents n etc.
93
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
94
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.
95
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.
96
22/04/2015© Robert Godin. Tous droits réservés.96 10.4.2 Mise en œuvre du plan d'exécution n Matérialisation des tables intermédiaires n Pipeline
97
22/04/2015© Robert Godin. Tous droits réservés.97 10.4.2.1 MISE EN ŒUVRE PAR MATÉRIALISATION
98
22/04/2015© Robert Godin. Tous droits réservés.98 10.4.2.2 MISE EN ŒUVRE PAR PIPELINE
99
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…
100
22/04/2015© Robert Godin. Tous droits réservés.100 10.4.3 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
101
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
102
22/04/2015© Robert Godin. Tous droits réservés.102 10.4.4 Optimisation heuristique n Oracle – mode RULE
103
22/04/2015© Robert Godin. Tous droits réservés.103 10.4.5 Optimisation par coût n Minimiser le coût n Stratégies – programmation dynamique – amélioration itérative – recuit simulé – algorithme génétique
104
22/04/2015© Robert Godin. Tous droits réservés.104 10.4.5.1 ESTIMATION DU COÛT D'UN PLAN D'EXÉCUTION TempsES(Plan avec pipeline) = TempsES (JTF Livre Catégorie ) = 2 558 090 ms
105
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 = 1 000 000 n B Livre Catégorie = N Livre Catégorie /FB Livre Catégorie = 1,000,000/13 = 76 924 n TempsES(Ecriture de Livre Catégorie) = 76 924 * TempsESBloc = 776 932,4 ms 22/04/2015© Robert Godin. Tous droits réservés.105
106
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 = 76 924/50 * 10ms + 76 924 *0,1ms = 23 082,4 ms 22/04/2015© Robert Godin. Tous droits réservés.106
107
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=1-11-111-1111 (Livre) * TempsES(S=IS sur code de Catégorie) = 50,5 ms + 30,3 ms = 80,8 ms
108
22/04/2015© Robert Godin. Tous droits réservés.108 10.4.5.2 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))
109
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 = 4 000 * 50 = 200 000 n N code,annéeParution(T) = k(1-(1- 1/k) N ) n = 198 652 lignes (en arrondissant)
110
22/04/2015© Robert Godin. Tous droits réservés.110 10.4.5.3 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
111
22/04/2015© Robert Godin. Tous droits réservés.111 10.4.6 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
112
22/04/2015© Robert Godin. Tous droits réservés.112 Indices (hints)
113
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 ?
114
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
115
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.
116
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
117
22/04/2015© Robert Godin. Tous droits réservés.117 SQL Analyse
118
22/04/2015© Robert Godin. Tous droits réservés.118 Affichage du plan d ’exécution selon un mode particulier
119
22/04/2015© Robert Godin. Tous droits réservés.119 Consommation de ressources
120
22/04/2015© Robert Godin. Tous droits réservés.120 Cas DB2 n Documentation – http://www-4.ibm.com/cgi-bin/software/db2www/library/pubs.d2w/report#UDBPUBS http://www-4.ibm.com/cgi-bin/software/db2www/library/pubs.d2w/report#UDBPUBS 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
121
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
122
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
123
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
124
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
125
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 SC09-2840-00, 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) [62.331280] timerons Initial set of proposed indexes is ready. Found maximum set of [2] recommended indexes Cost of workload with all indexes included [29.795755] timerons cost without index [0] is [58.816662] timerons. Derived benefit is [29.020907] cost without index [1] is [33.310373] timerons. Derived benefit is [3.514618] total disk space needed for initial set [2] MB total disk space constrained to [-1] MB 2 indexes in current solution [62.331280] timerons (without indexes) [29.795755] 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.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.