1 ‰valuation des requtes relationnelles. 2 Concepts de base

  • View
    106

  • Download
    0

Embed Size (px)

Text of 1 ‰valuation des requtes relationnelles. 2 Concepts de base

  • Page 1
  • 1 valuation des requtes relationnelles
  • Page 2
  • 2 Concepts de base
  • Page 3
  • 3 Requte interne
  • Page 4
  • 4 Optimisation statique ou dynamique Dynamique chaque excution EXECUTE IMMEDIATE de SQL Statique compilation PREPARE de SQL plusieurs excutions EXECUTE roptimisation automatique suite modification de schma interne?
  • Page 5
  • 5 Dcomposition 1)Analyse syntaxique 2)Analyse smantique 3)Rsolution des vues 4)Simplification syntaxique 5)Simplification smantique
  • Page 6
  • 6 Estimation du cot des oprations physiques TempsES : temps daccs mmoire secondaire (MS) TempsUCT souvent ngligeable TailleMC : espace mmoire centrale TailleMS : espace mmoire secondaire
  • Page 7
  • 7 Modle du cot d'une entre-sortie en mmoire secondaire TempsESBloc = TempsESDisque(TailleBloc) = TempsPosDbut + TempsTrans (TailleBloc) TempsTrans (TailleBloc) = TailleBloc / TauxTransVrac
  • Page 8
  • 8 Statistiques au sujet des tables
  • Page 9
  • 9 Statistiques (suite)
  • Page 10
  • 10 Statistiques (suite)
  • Page 11
  • 11 Maintien des statistiques par le SGBD Cot inversement reli la prcision Mise jour incrmentale chaque mise jour Mise jour en diffr priodes de faible activit dclenchement contrl par ABD Estimation par chantillonnage tables trs volumineuses Commande ANALYSE (Oracle) contrle du dclenchement paramtres d chantillonnage
  • Page 12
  • 12 Cot des oprations de base Algbre physique Hypothses Nglige effet de l antmmoire Nglige criture du rsultat TailleLigne < TailleBloc Sans interruption
  • Page 13
  • 13 Balayage (BAL) TempsES(BAL)=B T *TempsTrans+NombrePos* TempsPosDbut
  • Page 14
  • 14 Exemple : TempsES (BAL Editeur ) Allocation srielle sans fragmentation interne FB Editeur = FBM Editeur = 60 B Editeur = N Editeur / FB Editeur = 50/ 60 = 1 bloc TempsES (BAL Editeur ) = B Editeur * TempsTrans + NombrePos * TempsPosDbut TempsES (BAL Editeur ) = 11 ms
  • Page 15
  • 15 Exemple : TempsES (BAL Catgorie ) Allocation srielle sans fragmentation interne FB Catgorie = FBM Catgorie = 40 B Catgorie = N Catgorie / FB Catgorie = 4 000/ 40 = 100 blocs Meilleur cas : TempsES (BAL Catgorie ) = B Catgorie * TempsTrans + NombrePos * TempsPosDbut = 100 * 1 ms + 1 * 10 ms = 110 ms Pire cas : TempsES (BAL Catgorie ) = 100 * 1 ms + 100 * 10 ms = 1 100 ms
  • Page 16
  • 16 Exemple : TempsES (BAL Livre ) Allocation srielle sans fragmentation interne FB Livre = FBM Livre = 20 B Livre = N Livre / FB Livre = 1 000 000/ 20 = 50 000 blocs Meilleur cas : TempsES (BAL Livre ) = 50,01 secs Pire cas : TempsES (BAL Livre ) = 9,16 minutes
  • Page 17
  • 17 Exemple : TempsES (BAL Livre ) Arbre-B + primaire sur la cl primaire ISBN FB Livre = 2/3 FBM Livre = 13 B Livre = N Livre / FB Livre = 1 000 000/ 13 = 76 924 blocs Pire cas (conscutivit des feuilles non assure) ! TempsES (BAL Livre ) = B Livre * TempsTrans + NombrePos * TempsPosDbut = 76 924* 1ms + 76 924 * 10ms = 848 164 ms = 14,1 minutes
  • Page 18
  • 18 Slection par galit dans un index arbre-B + primaire (S=IP) TempsES (S=IP) = Parcours des niveaux dindex (Hauteur I -1) * TempsESBloc + Parcours des feuilles Sel T (ClIndex = Valeur)/ FB T * TempsESBloc
  • Page 19
  • 19 Suite Cas dune cl candidate TempsES (S=IP sur cl candidate)=Hauteur I * TempsESBloc Estimation de Hauteur I 1 + log OrdreMoyenI (Card T (ClIndex) / FB T ) OrdreMoyen I = 2/3 Ordre I FB T = 2/3 FBM T
  • Page 20
  • 20 Index primaire code de la table Catgorie (cl primaire ) OrdreMoyen I = 2/3 Ordre I = 66 FB Catgorie = 2/3 FBM Catgorie = 26 Hauteur I = 1 + log OrdreMoyenI (Card Catgorie (code) / FB Catgorie ) = 1+ log 66 (4 000 / 26) = 3 TempsES (S=IP) = Hauteur I *TempsESBloc = 33 ms
  • Page 21
  • 21 Index primaire sur code de la table Livre (cl trangre) OrdreMoyen I = 2/3 Ordre I = 66 FB Livre = 2/3 FBM Livre = 13 Hauteur I = 1 + log OrdreMoyenI (Card Livre (code) / FB Livre ) = 3 FacteurSlectivit Livre (code) = 1/ Card Livre (code) = 1/4 000 Sel Livre (code = Valeur ) = = 1 000 000/4000 = 250 lignes TempsES (S=IP) = (Hauteur I -1) * TempsESBloc + Sel Livre (code = Valeur)/ FB Livre ) * TempsESBloc = 2* 11 ms + ( 250/ 13) * 11 ms = 22 ms +20 * 11 ms = 242 ms
  • Page 22
  • 22 Index primaire sur ISBN de Livre (cl primaire) OrdreMoyen I = 2/3 Ordre I = 66 FB Livre = 2/3 FBM Livre = 13 Hauteur I = 1 + log OrdreMoyenI (Card Livre (ISBN) / FB Livre ) = 4 TempsES (S=IP) = Hauteur I *TempsESBloc = 44 ms
  • Page 23
  • 23 Taille de l'index primaire TailleMS(IP) = TailleIndexInterne + B livre FB T = 2/3 FBM T B T = N T / FB T TailleIndexInterne Card T (ClIndex)/ OrdreMoyen I
  • Page 24
  • 24 Index primaire sur code de Livre FB Livre = 2/3*FBM Livre = 13 B Livre = N Livre / FB Livre = 1 000 000/ 13 = 76 924 blocs TailleIndexInterne Card Livre (code)/ OrdreMoyen I = 61 blocs TailleMS(IP) = TailleIndexInterne + B Livre 76 985 blocs 50 000 blocs pour allocation srielle
  • Page 25
  • 25 Slection par galit dans un index arbre-B + secondaire (S=IS)
  • Page 26
  • 26 Estimation de TempsES (S=IS) Niveaux dindex (Hauteur I -1) * TempsESBloc Feuilles de l index Sel T (ClIndex = Valeur)/ OrdreMoyen I *TempsESBloc Blocs de l organisation primaire Sel T (ClIndex = Valeur)*TempsESBloc TempsES (S=IS sur cl candidate) (Hauteur I +1)*TempsESBloc
  • Page 27
  • 27 Estimation sans relecture de blocs viter de relire les blocs de donnes de l organisation primaire Nombre moyen de blocs lire : (1- (1- FacteurSlectivit T (ClIndex)) FB )* B T
  • Page 28
  • 28 Estimation de Hauteur I pour index secondaire Hypothses cls rptes OrdreMoyen = FB Hauteur I = log OrdreMoyenI (N T )
  • Page 29
  • 29 Index secondaire code de Livre (cl trangre) Hauteur I = log 66 (1 000 000) = 4 Sel Livre (code = Valeur )= 250 lignes TempsES (S=IS) = 2 827ms TempsES (S=ISa) = 2 827ms TempsES (S=IP) = 242ms
  • Page 30
  • 30 Index secondaire sur code de Livre (cl trangre) Hauteur I = log 66 (1 000 000) = 4 Sel Livre (code = Valeur) = 50 000 lignes TempsES (S=IS) = 558 371ms TempsES (S=ISa) = 361 207ms Pire que TempsES (BAL Livre ) = 50,01 secs !
  • Page 31
  • 31 Index secondaire sur ISBN de Livre (cl primaire) Hauteur I = log 66 (1 000 000) = 4 TempsES (S=IS sur cl candidate) = (Hauteur I +1)*TempsESBloc = 55 ms ~TempsES (S=IP) = Hauteur I *TempsESBloc = 44 ms
  • Page 32
  • 32 Taille de l'index secondaire Index secondaire code de Livre (cl trangre) TailleMS(IS) = N Livre / OrdreMoyen I = 15 152 blocs ~ 1/3 taille de la table ! TailleMS(IS) (15 152) + B Livre (50 000)< TailleMS(IP) (76 985)
  • Page 33
  • 33 Slection par intervalle dans un index arbre-B + primaire (S>IP) ~ cl non unique ClIndex [Valeur 1..Valeur 2 ] TempsES (S>IP) = (Hauteur I -1) * TempsESBloc + Sel T (ClIndex [Valeur 1..Valeur 2 ])/ FB T * TempsESBloc
  • Page 34
  • 34 Index primaire sur code de la table Livre (cl trangre) OrdreMoyen I = 2/3 Ordre I = 66 FB Livre = 2/3 FBM Livre = 13 Hauteur I = 3 TempsES (S>IP) = 4 257 ms
  • Page 35
  • 35 Slection par intervalle dans un index arbre-B + secondaire (S>IS) ~ cl non unique
  • Page 36
  • 36 Slection par galit avec hachage (S=H) Hachage statique + chanage TempsES (S=H) = N T /( TH T * FB T ) * TempsESBloc
  • Page 37
  • 37 Hachage sur ISBN de Livre (cl primaire) Hypothse ~ idale TR = 80% FB Livre = 0,8* FBM Livre = 16 TH Livre = N Livre / FB Livre = 62 500 blocs pas de dbordements TempsES (S=H) = 1 000 000/( 62 500* 16) * 11ms =11 ms TempsES (S=IP) = Hauteur I *TempsESBloc = 44 ms
  • Page 38
  • 38 Hachage sur code de Livre (cl trangre) Hypothse ~ idale TH Livre = Card Livre (code) = 4 000 FB Livre = FBM Livre = 20 TempsES (S=H) = 1 000 000/( 4 000 * 20) * 11ms = 143 ms TempsES (S=IP) = 242 ms
  • Page 39
  • 39 Taille de l'organisation par hachage TailleMS(S=H) = N T /FB T Hachage sur ISBN de Livre (cl primaire) Hypothse ~ idale TailleMS(S=H) = TH Livre = N Livre / FB Livre = 62 500 blocs
  • Page 40
  • 40 Slection par cl compose Hypothse de distribution indpendante FacteurSlectivit T (C 1 = V 1 et C 2 = V 2 et et C n = V n ) = FacteurSlectivit T (C 1 )* FacteurSlectivit T (C 2 ) * * FacteurSlectivit T (C n )
  • Page 41
  • 41 Index secondaire sur cl compose {code, anneParution} de Livre Hauteur I = log 33 (1 000 000) = 4 FacteurSlectivit Livre (code = V 1 et anneParution = V 2 ) = FacteurSlectivit Livre (code)* FacteurSlectivit Livre (anneParution) = 1/Card Livre (code) * 1/Card Livre (anneParution) = 1/200 000 Sel Livre (code = V 1 et anneParution = V 2 )= N Livre / 200 000 = 5 lignes TempsES (S=IS) = (Hauteur I - 1) * TempsESBloc + Sel Livre (code = V 1 et anneParution = V 2 )/ OrdreMoyen I *TempsESBloc + Sel Livre (code = V 1 et anneParution = V 2 ) * TempsESBloc TempsES (S=IS) = 3 * 11 ms + 5/ 33 *11 ms + 5 * 11 ms = 99 ms
  • Page 42
  • 42 Index secondaire sur cl compose {code, anneParution} de Livre Hauteur I = log 33 (1 000 000) = 4 TempsES (S=IS) = (Hauteur I - 1) *