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

1 Évaluation des requêtes relationnelles n SQL – QUOI n Évaluateur de requêtes du SGBD – COMMENT – en fonction du schéma interne.

Présentations similaires


Présentation au sujet: "1 Évaluation des requêtes relationnelles n SQL – QUOI n Évaluateur de requêtes du SGBD – COMMENT – en fonction du schéma interne."— Transcription de la présentation:

1 1 Évaluation des requêtes relationnelles n SQL – QUOI n Évaluateur de requêtes du SGBD – COMMENT – en fonction du schéma interne

2 2 Exemple courant n Dans la suite, on va considérer les tables – Livre(ISBN, titre, année, éditeur, #code) – Catégorie(code, description, #code_parent)

3 3 Requête interne SELECTtitre, descripteur FROMlivre, categorie WHEREISBN= AND livre.code=categorie.code

4 4 Plan d exécution 1

5 5 Plan d exécution 2

6 6 Plan d exécution 3

7 7 Estimation du coût des opérations physiques n TempsES : temps daccès à la mémoire secondaire (MS) n TempsUCT – souvent négligeable n TailleMC : espace mémoire centrale n TailleMS : espace mémoire secondaire

8 8 Statistiques TempsPosDébutTemps quil faut pour se positionner au début du premier octet à transférer (ex: 10ms) TempsTransTemps quil faut pour transférer un bloc (ex: 1ms) TempsESBloc(ex: 11ms) TailleBloc(ex: 2KO) NTNT Nombre de lignes de la table T TailleLigne T Taille dune ligne de la table T FB T Facteur de blocage moyen de T (#lignes/bloc) FBM T Facteur de blocage Max de T BTBT Nombre de blocs de T

9 9 Coût des opérations de base n Hypothèses – Néglige effet de l antémémoire (cache) – Néglige écriture du résultat – TailleLigne < TailleBloc – Sans interruption

10 10 Balayage (BAL) n TempsES (BAL) = B T * TempsTrans + NombrePos * TempsPosDébut

11 11 Exemple : TempsES (BAL Editeur ) n Allocation sérielle sans fragmentation interne n B Editeur = N Editeur / FB Editeur = 50/ 60 = 1 bloc n TempsES (BAL Editeur ) = 11 ms

12 12 Exemple : TempsES (BAL Catégorie ) n Allocation sérielle sans fragmentation interne n B Catégorie = 4 000/ 40 = 100 blocs n Meilleur cas : 100 * 1 ms + 1 * 10 ms = 110 ms n Pire cas : 100 *1 ms+100* 10 ms = ms

13 13 Exemple : TempsES (BAL Livre ) n Allocation sérielle sans fragmentation interne n B Livre = / 20 = blocs n Meilleur cas : – TempsES (BAL Livre ) = 50,01 secs n Pire cas : – TempsES (BAL Livre ) = 9,16 minutes

14 14 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) ! = * 1ms * 10ms = ms = 14,1 mn

15 15 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

16 16 Suite n Cas d une clé candidate TempsES (S=IP )= 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

17 17 Index primaire code de la table Catégorie (clé) 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 ) = 1+ log 66 (4 000 / 26) = 3 n TempsES (S=IP) = Hauteur I *TempsESBloc = 33 ms

18 18 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* 11 ms + ( 250/ 13) * 11 ms = 22 ms +20 * 11 ms = 242 ms

19 19 Index primaire sur ISBN de Livre 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 = 44 ms

20 20 Sélection par égalité dans un index arbre-B + secondaire (S=IS)

21 21 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 22 Estimation de Hauteur I pour index secondaire n Hypothèses – clés répétées – FB = OrdreMoyen n Hauteur I = log OrdreMoyenI (N T )

23 23 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) = 2 827ms n TempsES (S=ISa) = 2 827ms n TempsES (S=IP) = 242ms

24 24 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) = ms n Pire que TempsES (BAL Livre ) = 50,01 secs !

25 25 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 = 55 ms n ~TempsES (S=IP) = Hauteur I *TempsESBloc = 44 ms

26 26 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

27 27 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) = ms

28 28 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

29 29 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) = 104 ms

30 30 É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 = 396 ms

31 31 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 – = 104 ms ms = 500 ms

32 32 Tri de Livre n Allocation sérielle sans fragmentation interne n M = 50 n TempsES (TRI) = 29,5 mins

33 33 OPÉRATIONS DE JOINTURE n Cas de deux tables R|X| S n Extension directe à d autres cas – union, intersection, jointure externe,...

34 34 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 (Tampon assez grand) : – TempsES (BI) = TempsES (BAL R ) + TempsES (BAL S ) = – (B R + B S ) * TempsTrans + 2*TempsPosDébut

35 35 BI : Livre |X| Catégorie n R=Livre et S=Catégorie – TempsES (BI) = 30,57 hrs n R = Catégorie et S = Livre – TempsES (BI) = 56,57 hrs n Meilleur cas (sans relecture) – TempsES (BI) = ms

36 36 Boucles imbriquées par blocs (BIB) TempsES (BIB) = – B R * TempsESBloc + – B R * (B S * TempsTrans + TempsPosDébut)

37 37 BIB: Livre |X| Catégorie n R=Livre et S=Catégorie – TempsES (BIB) = 100,83 mins n R = Catégorie et S = Livre – TempsES (BIB) = 83,37 mins n Meilleur cas (sans relecture) – TempsES (BIB) = ms

38 38 Boucles imbriquées multi-blocs (BIM) TempsES (BIM) = – B R * TempsTrans + B R /(M-2) * TempsPosDébut + B R /(M-2) * (B S * TempsTrans + TempsPosDébut)

39 39 BIM: Livre |X| Catégorie n M = 50 n R=Livre et S=Catégorie – TempsES (BIM) = 175,04secs n R = Catégorie et S = Livre – TempsES (BIM) = 150,16secs

40 40 Jointure par boucles imbriquées avec index sur la table interne (BII) TempsES (BII) = – B R * TempsESBloc + – N R * TempsES (Sélection par index)

41 41 BII: Livre |X| Catégorie n Cas des index primaires n R=Livre et S=Catégorie TempsES (BII) = 9,32 hrs n R = Catégorie et S = Livre TempsES (BII) = 16,15 mins

42 42 Jointure par tri-fusion (JTF) n TempsES (JTF) = TempsES (TRI R ) + TempsES (TRI S ) + 2*(B R + B s ) * TempsESBloc

43 43 JTF: Livre |X| Catégorie M = 50 TempsES (JTF) = TempsES (TRI Livre ) + TempsES (TRI Catégorie ) + 2*(B Livre + B Catégorie ) * TempsESBloc = ms – >>TempsES (BIM) = ms (R = Catégorie)

44 44 Si 100 fois plus de Catégories n M = 50 – TempsES (JTF) = ms – < TempsES (BIM) = ms n M = 10 – TempsES (JTF) = ms – << TempsES (BIM) = ms

45 45 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

46 46 Plans d'exécutions équivalents n Plusieurs arbres algébriques équivalents n etc.

47 47 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 |X| T 2 = T 2 |X| T 1 n Associativité de la jointure (JA) – T 1 |X| (T 2 |X| T 3 ) = (T 1 |X| T 2 ) |X| T 3 n Etc …

48 48 Plusieurs plans d exécution pour un arbre algébrique n Pour chaque opération logique – plusieurs choix d opérations physiques – etc.

49 49 Mise en œuvre du plan d'exécution n Matérialisation des tables intermédiaires n Pipeline

50 50 MISE EN ŒUVRE PAR MATÉRIALISATION

51 51 MISE EN ŒUVRE PAR PIPELINE

52 52 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 les plus restrictives en premier – jointures supportées par index en premier

53 53 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

54 54 Optimisation par coût n Minimiser le coût n Stratégies – programmation dynamique – amélioration itérative – recuit simulé – algorithme génétique

55 55 ESTIMATION DU COÛT D'UN PLAN D'EXÉCUTION TempsES(Plan avec pipeline) = TempsES (JTF Livre|X|Catégorie ) = ms

56 56 Autre exemple TempsES(Plan avec pipeline) = TempsES(S=IS pour index sur ISBN) + N ISBN=1(Livre) * TempsES(S=IS sur code de Catégorie) = 55 ms + 33 ms = 88 ms

57 57 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 C1,C2,…,Cn(T) = (1- colonnes Ci de la projection (1- FacteurSélectivité T (C i )))*N T n Taille d'une jointure naturelle – N R |X| S = N R * N S / maximum(Card R (cléJointure), Card S (cléJointure))

58 58 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

59 59 Indices (hints)

60 60 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 ? (Il semble que oui)

61 61 Changement du mode pour une session n ALTER SESSION SET OPTIMIZER_GOAL = – RULE | ALL_ROWS | FIRST_ROWS | CHOOSE

62 62 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.

63 63 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

64 64


Télécharger ppt "1 Évaluation des requêtes relationnelles n SQL – QUOI n Évaluateur de requêtes du SGBD – COMMENT – en fonction du schéma interne."

Présentations similaires


Annonces Google