La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

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.


Télécharger ppt "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."

Présentations similaires


Annonces Google