optim

32
Bases de données avancées Évaluation et optimisation des requêtes Dan VODISLAV Université de Cergy-Pontoise Master Informatique M1 Cours BDA Cours BDA (UCP/M1): Optimisation 2 Plan Traitement d'une requête – Étapes – Décomposition Traduction algébrique et plan d'exécution Optimisation des requêtes – Principes Règles de réécriture Chemins d'accès Algorithmes de jointure: boucles imbriquées, tri fusion, hachage, index Algèbre physique Évaluation des requêtes Optimisation dans Oracle

description

optim

Transcript of optim

Bases de donnes avancesvaluation et optimisation des requtesDan VODISLAV Universit de Cergy-PontoiseMaster Informatique M1Cours BDACours BDA (UCP/M1): Optimisation 2Plan Traitement d'une requte tapes Dcomposition Traduction algbrique et plan d'excution Optimisation des requtes Principes Rgles de rcriture Chemins d'accs Algorithmes de jointure: boucles imbriques, tri fusion, hachage, index Algbre physique valuation des requtes Optimisation dans OracleCours BDA (UCP/M1): Optimisation 3Traitement d'une requte Requtes exprimes en SQL: langage dclaratif On indique ce que l'on veut obtenir On ne dit pas comment l'obtenir Le SGBD doit faire le reste Dterminer la faon d'excuter la requte: plan d'excution Plusieurs plans possibles choisir le meilleur : optimisation Excuter le plan choisi: valuation Plan d'excution Exprim en algbre relationnelle (expression algbrique) Forme excutable: on sait prcisment comment l'valuerCours BDA (UCP/M1): Optimisation 4tapes Dcomposition: requte SQL expr. algbre relationnelle Optimisation: expr. algbre relationnelle plan d'excution valuation (traitement): plan d'excution rsultatsRequte SQLTRAITEMENTAccs aux fichiersEvaluation des cotsChoix des algorithmesOPTIMISATIONDECOMPOSITIONExpression de lAlgbre Rel.Plan dExcutionCOUCHE LOGIQUECOUCHE PHYSIQUEAnalyse/SimplificationTraduction algbriqueCours BDA (UCP/M1): Optimisation 5Dcomposition Sous-tapes Analyse syntaxique Analyse smantique Simplification Normalisation Traduction algbrique Analyse syntaxique Requte = chane de caractres Contrle de la structure grammaticale (respect de la syntaxe SQL) Vrification de l'existence des relations/attributs adresss dans la requte Utilisation du dictionnaire de donnes de la base Transformation en une reprsentation interne: arbre/graphe syntaxiqueCours BDA (UCP/M1): Optimisation 6Dcomposition (suite) Analyse smantique Vrification des oprations raliss sur les attributsEx. Pas d'addition sur un attribut texte Dtection d'incohrencesEx. prix=5 and prix=6 Simplification Conditions inutilement complexesEx. (A or not B) and B est quivalent A and B Normalisation: simplifie la traduction algbrique Transformation des conditions en forme normale conjonctive Dcomposition en blocs Select-From-WhereCours BDA (UCP/M1): Optimisation 7Traduction algbrique Dterminer l'expression algbrique quivalente la requte SQL Clause SELECT oprateur de projection Clause FROM les relations qui apparaissent dans l'expression Clause WHERE Condition "Attr = constante" oprateur de slection Condition "Attr1 = Attr2" jointure ou slection Rsultat: expression algbrique Reprsente par un arbre de requteCours BDA (UCP/M1): Optimisation 8Exemple de traduction algbrique Soit le schma relationnel (simplifi) Cinma (ID-cinma, nom, adresse) Salle (ID-salle, ID-cinma, capacit) Sance (ID-salle, heure-dbut, film) Requte: quels films commencent au Multiplex 20 heures?SELECT Sance.filmFROM Cinma, Salle, SanceWHERE Cinma.nom = 'Multiplex' ANDSance.heure-dbut = 20 ANDCinma.ID-cinma = Salle.ID-cinma ANDSalle.ID-salle = Sance.ID-salle Expression algbrique film( nom = 'Multiplex' heure-dbut = 20((Cinma Salle) Sance)Cours BDA (UCP/M1): Optimisation 9Exemple (suite) Arbre de requte film( nom = 'Multiplex' heure-dbut = 20((Cinma Salle) Sance)CinmaSalle Sance nom = 'Multiplex' heure-dbut = 20 filmCours BDA (UCP/M1): Optimisation 10Optimisation Pour une requte SQL, il y a plusieurs expressions algbriques quivalentes possibles Le rle de principe de l'optimiseur: Trouver les expressions quivalentes une requte valuer leurs cots et choisir "la meilleure" On passe d'une expression une autre quivalente en utilisant des rgles de rcritureCours BDA (UCP/M1): Optimisation 11Rgles de rcriture De nombreuses rgles existent Exemples Commutativit des jointuresR S S R Associativit des jointures(R S) T R (S T ) Regroupement des slections A='a' B='b' (R) A='a' ( B='b' (R)) Commutativit de la slection et de la projection A1,, An( Ai='a' (R)) Ai='a' ( A1,, An(R)) , i {1, , n}Cours BDA (UCP/M1): Optimisation 12Rgles de rcriture (suite) Exemples (suite) Commutativit de la slection et de la jointure A='a' (R(, A, ) S ) A='a' (R) S Distributivit de la slection sur l'union (pareil pour la diffrence) A='a' (R S ) A='a' (R) A='a' (S) Commutativit de la projection et de la jointure A1,, An, B1, , Bm, (R Ai = BjS ) A1,, An(R) Ai = Bj B1, , Bm(S) Distributivit de la projection sur l'union (pareil pour la diffrence) A1,, An (R S ) A1,, An(R) A1,, An(S)Cours BDA (UCP/M1): Optimisation 13Restructuration (rcriture) algbrique Transformation de l'expression algbrique pour en obtenir une autre "meilleure" quivalente Utilisation des rgles de rcriture Exemple d'algorithme de restructuration1. Sparer les slections plusieurs prdicats en plusieurs slections un prdicat (regroupement des slections)2. Descendre les slections le plus bas possible dans l'arbre (rgles de commutativit et distributivit de la slection)3. Regrouper les slections sur une mme relation (regroupement des slections)4. Descendre les projections le plus bas possible dans l'arbre (rgles de commutativit et distributivit de la projection)5. Regrouper les projections sur une mme relationCours BDA (UCP/M1): Optimisation 14Justification de l'algorithme Ide de base: rduire la taille des donnes traites le plus tt possible On ralise d'abord les slections, car c'est l'oprateur le plus "rducteur" On ralise ds que possible des projections pour liminer les attributs inutiles On ralise les jointures (opration trs coteuse) une fois que la taille des donnes a t rduite au maximum Question:le plan ainsi obtenu est-il toujours optimal? Rponse: NON, d'autres facteurs peuvent intervenirCours BDA (UCP/M1): Optimisation 15Rsultat aprs la restructurationCinma Salle Sance nom = 'Multiplex' heure-dbut = 20 filmCinma Salle Sance film nom = 'Multiplex' ID-cinma ID-salle, ID-cinma heure-dbut = 20 ID-salle, film ID-salleCours BDA (UCP/M1): Optimisation 16Exemple d'optimisation qui choue On rajoute une table Film, en plus de Cinma, Salle, Sance Film (film, ralisateur, anne) Requte: les ralisateurs des films qu'on peut voir entre 14h-22hSELECT Film.ralisateurFROM Film, SanceWHERE Sance.heure-dbut > 14 AND Sance.heure-dbut < 22 AND Film.film = Sance.film Expressions algbrique Initiale: ralisateur( heure-dbut > 14 heure-dbut < 22(Film Sance)) Optimise: ralisateur(Film heure-dbut > 14 heure-dbut < 22(Sance)) Hypothses Film occupe 8 pages et ne contient que pour 20% des films de Sance Sance occupe 50 pages et 90% des sances sont entre 14h et 22hCours BDA (UCP/M1): Optimisation 17Exemple (suite) Plan initial: ralisateur( heure-dbut > 14 heure-dbut < 22(Film Sance)) Jointure: on lit 8 * 50 = 400 pages et on produit 20% * 50 = 10 pages Slection: onproduit 90% * 10 = 9 pages de sances entre 14h-22h On laisse de ct la projection (mme cot dans les deux cas)Cot (E/S): 400E + 10S + 10E + 9S = 429 E/S Plan optimis: ralisateur(Film heure-dbut > 14 heure-dbut < 22(Sance)) Slection: on lit 50 pages et onproduit 90% * 50 = 45 pages de sances Jointure: on lit 8 * 45 = 360 pages et on produit 20% * 45 = 9 pagesCot (E/S): 50E + 45S + 360E + 9S = 464 E/SLe plan initial est ici meilleur que celui optimis! Cas rare: ici la jointure est plus slective que la slectionCours BDA (UCP/M1): Optimisation 18Conclusions rcriture algbrique La rcriture algbrique est ncessaire, mais pas suffisante Il faut tenir compte d'autres critres: Les chemins d'accs aux donnes On peut accder aux donnes d'une table par accs squentiel, par index, par hachage, etc. Les diffrents algorithmes possibles pour raliser un oprateur Il existe par exemple plusieurs algorithmes pour la jointure Souvent ces algorithmes dpendent des chemins d'accs disponibles Les proprits statistiques de la base de donnes Taille des tables Slectivit des attributs etc.Cours BDA (UCP/M1): Optimisation 19Chemins d'accs une table Dpendent de l'organisation physique de la table Accs squentiel: toujours possible Accs par index Pour chaque index sur un attribut A de la table: Valeur v de A liste d'adresses (ROWID) des articles ayant A=v Intervalle de valeurs [v1,v2] de A liste d'adresses des articles ayant A [v1,v2] Pour chaque index sur une liste d'attributs (A1, A2, , An) Valeurs vi de Ai (1 i n) liste d'adresses des articles ayant Ai=vi Remarque: un index sur (A1, A2, , An) est utilisable aussi comme index sur (A1, A2, , Ak), k < n Accs par hachage Si la table est organise par hachage sur un attribut A: tant donne une valeur v de A les articles ayant A=vCours BDA (UCP/M1): Optimisation 20Algorithmes de jointure La jointure est l'opration la plus coteuse Son optimisation est trs importante Plusieurs algorithmes, dpendants du chemin d'accs Chacun peut tre meilleur dans des situations spcifiques Choix entre plusieurs algorithmes meilleure optimisation Principaux algorithmes Boucles imbriques simples Tri-fusion Jointure par hachage Boucles imbriques avec indexCours BDA (UCP/M1): Optimisation 21Jointure par boucles imbriques Algorithme boucles-imbriquesEntres: tables R, SSortie: table de jointure JdbutJ := pour chaque r dans R rpterpour chaque s dans S rptersi r joignable s alors J := J {r s}fin rpterfin rpterfinCours BDA (UCP/M1): Optimisation 22Exemple de jointure par boucles imbriques Film (titre, anne) Ralisateur (nom, titre) SpielbergJurassic ParkHitchcock PsychoseLangMetropolis Allen ManhattanHitchcockVertigoAllenAnnie HallKubrik Shining SpielbergJurassic ParkHitchcock PsychoseLangMetropolis Allen ManhattanHitchcockVertigoAllenAnnie HallKubrik ShiningComparaisonAssociationVertigo 1958Annie Hall 1977Brazil1984.......Cours BDA (UCP/M1): Optimisation 23Analyse de cot La lecture des articles d'une table dans une boucle: On lit sur disque les pages de la table, pour les charger en mmoire On lit en mmoire les articles de chaque page Au niveau cot: seule compte la lecture des pages sur disque Hypothses Disque: TRpages pour R, TSpages pour S Mmoire: 2 pages (une page pour chacune des tables) Cot: TR+ TR TS=O (TR TS ) Pour chaque page de R on lit toutes les pages de S et on fait la jointure page par page entre les articles S est lue TRfois et R une seule fois On ne tient pas compte du cot de l'criture du rsultat, car il sera le mme quel que soit l'algorithme de jointureCours BDA (UCP/M1): Optimisation 24Analyse de cot (suite) Que se passe-t-il si l'on dispose de N pages de mmoire? Supposons qu'on alloue un tampon de K pages R et le reste S Pour chaque lecture du tampon de R il faut lire S en entierOn lit TR/K fois la table S et une seule fois la table RLa lecture de S n'a besoin que d'un minimum de mmoire (1 page) Donc on a besoin d'allouer le maximum de mmoire R (N-1 pages) et le minimum S (1 page) Cot: TR+ TR/(N-1) TSSi R entre en mmoire alors le cot est TR+ TS ! Conclusions La jointure par boucles imbriques est inefficace sur de grandes tables Toutefois, si l'une des relations entre en mmoire elle est trs efficaceCours BDA (UCP/M1): Optimisation 25Jointure par tri-fusion Algorithme tri-fusionEntres: tables R, SSortie: table de jointure J = R R.A=S.BSdbuttrier R sur l'attribut de jointure Atrier S sur l'attribut de jointure BJ := fusion (R, S)fin Fusion: on parcourt en parallle R et S, en joignant les articles rR et sS qui ont r.A = s.BCours BDA (UCP/M1): Optimisation 26Exemple de jointure par tri-fusion Ralisateur (nom, titre) Film (titre, anne)

TRIFUSIONTRI....AllenAnnie HallSpielbergJurassic ParkLangMetropolisHitchcock PsychoseKubrik ShiningHitchcockVertigo AllenManhattan....Annie Hall1977Brazil1984Easy Rider1969Greystoke 1984Jurassic Park 1992Manhattan 1979Metropolis 1926Psychose1960AllenAnnie Hall1977Spielberg Jurassic Park1992Film RalisateurCours BDA (UCP/M1): Optimisation 27Fusion Si l'une des tables a des valeurs distinctes pour l'attribut de jointureon la place en seconde position (table S)Algorithme fusionEntres: tables R trie sur A, S trie sur B Sortie: table de jointure J = R R.A=S.BSdbutJ := ; r := premier(R); s := premier(S)tant que r existe et s existe rptersi r.A = s.B alorsJ := J {r R.A=S.Bs}r := suivant(R)sinon si r.A < s.B alors r := suivant(R)sinon s := suivant(S)fin rpterfinCours BDA (UCP/M1): Optimisation 28Fusion (suite) L'avantage du cas prcdent: on ne revient jamais en arrire, donc un seul parcours des deux tables Si les deux tables ont des doublons pour l'attribut de jointure Pour chaque cas o r.A = v (n fois) et s.B = v (m fois), il faut produire nm articles dans la jointure A chaque nouvel article r, il faut prendre tous les s tel que s.B = r.A il faut revenir en arrire dans S similaire aux boucles imbriques Comportement similaire la fusion simple + boucles imbriques locales (l o il y a des doublons dans R et S pour une mme valeur d'attribut de jointure)Cours BDA (UCP/M1): Optimisation 29Analyse de cot tri-fusion Tri Pour une relation R et N pages de mmoire: Cottri= 2 TR (1+logN-1(TR)) = O (TR log(TR)) Fusion Fusion simple: un seul parcours de chaque relation Cotfusion= TR+ TS Fusion avec doublons: en moyenne un peu moins bon Au pire tous les articles ont la mme valeur pour l'attribut de jointure cot des boucles imbriques: Cotfusion= TR TS Cot total: O (TR log(TR) + TS log(TS) + TR+ TS) Le tri est plus coteux que la fusionLe cot de la jointure par tri-fusion est donn essentiellement par le triCours BDA (UCP/M1): Optimisation 30Comparaison boucles imbriques tri fusion Pour des grandes relations tri fusion plus efficaceEx. TR= TS= 1000 pagesCotbi TR TS= 1.000.000 lectures de pagesCottf TR log(TR) + TS log(TS) 1000*10 + 1000*10 = 20.000 Autre avantage du tri-fusion: limination des doublons, groupement, affichage ordonn plus rapides Si l'une des relations entre en mmoire boucles imbriques plus efficaceEx. TR= 30 pages, TS= 1000 pagesCotbi TR+ TS= 1030 lectures de pagesCottf TR log(TR) + TS log(TS) 30*5 + 1000*10 > 10.000UCP, Master M1, cours BDA: Optimisation 31Jointure par hachage Algorithme hachageEntres: tables R, S; fonction de hachage HSortie: table de jointure J = R R.A=S.BSdbutpour chaque r R rpterplacer r dans la page indique par H(r.A)fin rpterJ := pour chaque s S rpterlire la page p indique par H(s.B)pour chaque r p rpter si r.A=s.B alors J := J {r R.A=S.Bs}fin rpterfin Deux phases1. Hachage d'une des relations2. Calcul de la jointure avec l'autre relationUCP, Master M1, cours BDA: Optimisation 32Analyse de cot hachage Hypothses On considre 1 page / entre dans la table de hachage On considre k >> 1articles/page Notation: |R| = nombre d'articles dans la table R k*TR Hachage: lecture R et pour chaque article il faut lire/crire la page de hachage Cothachage= TRlectures + |R| lectures + |R| critures = TR+ 2|R| 2 |R| Jointure: lecture S et pour chaque article de S il faut lire une page de hachage Cotjointure= TSlectures + |S| lectures = TS + |S| |S| Cot total = TR+ TS+ 2|R| + |S| 2 |R| + |S|Il est prfrable de faire le hachage sur la relation la plus petite Remarque: si R hach tient en mmoire le cot se rduit TR+ TSUCP, Master M1, cours BDA: Optimisation 33Comparaison avec les autres algorithmes Le nombre d'oprations dpend du nombre d'articles, pas du nombre de pages Dans le cas gnral, la comparaison avec le tri-fusion dpend du nombre k d'articles par page (comparaison entre k et log(TR)) Si l'une des relations tient en mmoire aussi efficace que les boucles imbriques (mme plus) Inconvnient hachage: seulement pour la jointure avec galit Les boucles imbriques et mme le tri-fusion applicables aux jointures avec ingalitCours BDA (UCP/M1): Optimisation 34Jointure avec une table indexe Algorithme boucles-imbriques-indexEntres: tables R, S; index sur S.BSortie: table de jointure J = R R.A=S.BSdbutJ := pour chaque r R rpterpour chaque s IndexS.B(r.A) rpterJ := J {r R.A=S.Bs}fin rpterfin rpterfin Fonction IndexS.B(r.A) : cherche l'aide de l'index les articles de S dont l'attribut B a pour valeur r.A Gnralement l'index retourne une liste d'adresses d'articles (ROWID), utilises pour obtenir chaque article de SCours BDA (UCP/M1): Optimisation 35Analyse de cot jointure avec index Hypothses Index B+, stockant les adresses des articles k = nb. moyen d'entres dans une feuille de l'index Slectivit de l'attribut S.B: S.B= nombre de valeurs distinctes de S.B / |S| 1/ S.B = le nombre moyen d'articles ayant une mme valeur pour S.B Cot IndexS.B(r.A) = cot recherche index + cot lecture articles Cot recherche index = cot recherche 1refeuille + cot parcours feuilles Cot recherche 1refeuille = O (log(|S|)) Cot parcours feuilles = nb. feuilles ayant la valeur recherche = 1 / k*S.B Cot lecture articles: pour chaque adresse de l'index il faut lire une page Cot lecture articles =1 / S.B Cot IndexS.B(r.A) = O (log(|S|) + 1 / S.B ) Cours BDA (UCP/M1): Optimisation 36Analyse de cot (suite) Le facteur slectivit Index unique S.B =1, donc le facteur est ngligeable (une page de plus) Index non-unique 1 / S.Bpeut devenir prdominant (au max. |S| !) Cot jointure avec index: pour chaque r R on accde l'index Cot total = TR+ |R| cot IndexS.B(r.A) Cot total = O (|R| (log(|S|) + 1 / S.B ) ) Facteur slectivit Index unique ou trs slectif O (|R| log(|S|) ) Mauvaise slectivit (ex. p valeurs seulement) O (|R| |S| / p) Conclusion : efficace seulement si l'index est trs slectifCours BDA (UCP/M1): Optimisation 37Statistiques Importance des statistiques La taille des relations permet de choisir entre les algorithmes de jointure La slectivit des attributs permet de juger de l'opportunit de l'utilisation d'un index etc. Module d'acquisition de statistiques sur la base Une possibilit: dclenchement priodique Une autre variante: estimation en temps rel par chantillonnageCours BDA (UCP/M1): Optimisation 38Algbre physique Plan d'excution algbrique Plusieurs chemins d'accs possibles vers les donnes Plusieurs algorithmes possibles pour un oprateur algbriqueOn a besoin d'une algbre "plus fine" qui exprime des chemins d'accs et des oprations intermdiaires Algbre physique Chemins d'accs aux donnes Oprations physiquesCours BDA (UCP/M1): Optimisation 39Oprateurs de l'algbre physiqueSelectionTriFiltreJointureProjection FusionFiltre dun ensemble en fonction dun autreSelection selon un critereTri sur un attribut Jointure selon un critereFusion de deux ensembles tries Projection sur des attributsAttribut(s)Critere CritereCritereCritere Attribut(s)OPERATIONS PHYSIQUESParcours sequentielAcces par adresseParcours dindexCHEMINS DACCESTABLEINDEXAttribut(s)SequentielTABLEAdresseCours BDA (UCP/M1): Optimisation 40Exemple de plan physique Requte: quels films passent au Multiplex 20 heures?SELECT Sance.filmFROM Cinma, Salle, SanceWHERE Cinma.nom = 'Multiplex' ANDSance.heure-dbut = 20 ANDCinma.ID-cinma = Salle.ID-cinma ANDSalle.ID-salle = Sance.ID-salle Plan logique possibleCinma Salle Sance film heure-dbut = 20 nom = 'Multiplex'Cours BDA (UCP/M1): Optimisation 41Plan physique sans index, ni hachageCinma Salle SanceSquentiel Squentiel SquentielSlectionnom='Multiplex'TriTriFusionID-cinmaID-cinmaTriID-salleSlectionheure-dbut=20TriID-salleFusionProjectionfilmID-cinmaID-salleCours BDA (UCP/M1): Optimisation 42Plan physique avec index sur les attributs de jointureCinma Index Salle(ID-cinma) Index Sance(ID-salle)Squentiel ID-cinma ID-salleSlectionnom='Multiplex'JointureSlectionheure-dbut=20JointureProjectionfilmID-cinmaID-salleSalleAdresseSanceAdresseCours BDA (UCP/M1): Optimisation 43valuation de requtes Optimisation plan d'excution physique valuation: excution de ce plan Accs aux donnes Excution des algorithmes des oprateurs du plan Gestion des flots de donnes entre oprations Objectif: minimiser le nombre de lectures/critures de pages Deux points de vue: Obtenir le plus rapidement possible les premiers rsultats Applications interactives Optimisation globale, par rapport la production de tous les rsultats Applications "batch"Le choix des techniques d'valuation peut tre diffrentCours BDA (UCP/M1): Optimisation 44Techniques d'accs aux donnes Parcours squentiel: systmatiquement optimis dans les SGBD Principales techniques Regroupement des pages sur des espaces contigus "Extensions" dans Oracle Lecture en avance: la lecture d'une page on lit galement les n suivantes Typiquement n=7 ou n=15 Consquence On lit les pages par blocs contigus, ce qui est plus rapide que la lecture successive des pagesCours BDA (UCP/M1): Optimisation 45Utilisation d'un tampon Tampon ("buffer", cache): zone de mmoire qui permet de stocker des pages Problme complexe: essayer de garder dans le tampon les pages susceptibles d'tre rutilises "prochainement" Principe: utilisation d'un gestionnaire du tampon Un programme excutant une requte ne demande pas directement la lecture/criture d'un page, mais s'adresse au gestionnaire du tampon Le gestionnaire vrifie que la page se trouve dans le tampon (sinon il la lit du disque) avant de raliser l'opration Types de pages Statiques: c'est le programme qui demande au gestionnaire de la librer Volatiles: la page est la disposition du gestionnaireCours BDA (UCP/M1): Optimisation 46Parcours d'index La plupart des SGBD utilisent des variantes de l'arbre B Utilisation pour les oprations pour lesquelles l'index est conu Recherche par cl Recherche par intervalle de cls Optimisation d'autres oprations en utilisant l'index viter l'accs aux articles si le(s) champ(s) recherchs sont dans l'index Compter les articles qui respectent une condition lie la cl de l'index Test d'existence sur une condition lie la cl de l'indexCours BDA (UCP/M1): Optimisation 47Parcours d'index avec tampon Exemple: soit la requte suivante, en supposant un index sur anneSELECT titre FROM Film WHERE anne IN (1956, 1934, 1992, 1997) valuation simple: pour chaque valeur du IN on trouve dans l'index les adresses d'articles et on lit pour chaque adresse l'article pour rcuprer le titre valuation optimise: On cherche dans l'index les adresses pour toutes les valeurs du IN On groupe ces adresses par numro de page On lit chaque page et on extrait les articles et leur champ titreAvantage: on lit chaque page d'articles une seule foisInconvnient: on doit attendre la rcupration de toutes les adresses de l'index avant de calculer des rsultats Variante intermdiaire: tampon pour accumuler les adresses Regroupement par page quand le tampon est pleinCours BDA (UCP/M1): Optimisation 48valuation des oprateurs Types d'oprateurs Pipeline: qui peuvent calculer des rsultats un par un, en demandant une par une les valeurs d'entre Non-pipeline: qui ont besoin de toutes les donnes d'entre pour pouvoir produire des rsultats Avantage des oprateurs pipeline Peuvent produire rapidement des rsultats, adapts des applications interactives Pas besoin de stocker des donnes intermdiaires, car chaque rsultat d'un oprateur peut tre consomm tout de suite par un autre oprateur gain de performances Les oprateurs de l'algbre physique prsente: Tous sont pipeline sauf le triCours BDA (UCP/M1): Optimisation 49Implmentation des oprateurs Implmentation sous forme d'itrateurs Itrateur: objet qui chaque appel produit le rsultat suivant Objectif: produire des rsultats au fur et mesure Un plan compos d'itrateurs est lui-mme un itrateur Compatibles la fois avec les oprateurs pipeline et non-pipeline Principales oprations sur un itrateur: initialisation( ), suivant( ) Exemple Projection pour chaque article a en entre rpterproduire projection(a) Itrateur projectiona = entre.suivant()produire projection(a)Cours BDA (UCP/M1): Optimisation 50Excution d'un plan On demande le rsultat suivant l'oprateur racine Celui-ci demande le rsultat suivant ses entres, etc. Propagation des commandes racine feuilles Propagation des donnes feuilles racineCinmaSquentielSlectionnom='Multiplex'JointureProjectioncapacitID-cinmaSalleSquentielCinmaSquentielSlectionnom='Multiplex'JointureProjectioncapacitID-cinmaSalleAdresseIndex Salle(ID-cinma)ID-cinmaCours BDA (UCP/M1): Optimisation 51Optimisation dans Oracle Approche classique Gnration de plusieurs plans d'excution physiques Estimation du cot de chaque plan Choix du meilleur plan et excution Algbre physique Chemins d'accs aux donnes: squentiel, index, hash, cluster Oprateurs de traitement: boucles imbriques, filtre, tri, fusion, Outils EXPLAIN: visualisation des plans d'excution ANALYSE: production de statistiques TKPROF: mesure du temps d'excutionCours BDA (UCP/M1): Optimisation 52Chemins d'accs aux donnes dans Oracle Parcours squentiel TABLE ACCESS FULL Accs direct par adresse TABLE ACCESS BY (INDEX|USER|) ROWID Accs par index INDEX (UNIQUE|RANGE|) SCAN Accs par hachage TABLE ACCESS HASH Accs par cluster TABLE ACCESS CLUSTERCours BDA (UCP/M1): Optimisation 53Oprateurs physiques Pour la jointure Boucles imbriques: NESTED LOOPS Tri-fusion: SORT JOIN, MERGE JOIN Hachage: HASH JOIN Autres oprations Union d'ensembles d'articles: CONCATENATION, UNION Intersection d'ensembles d'articles: INTERSECTION Diffrence d'ensembles d'articles: MINUS Filtrage d'articles d'une table bas sur une autre table: FILTER Intersection d'ensembles de ROWID: AND-EQUAL Cours BDA (UCP/M1): Optimisation 54Plan d'excution EXPLAIN Commande EXPLAIN PLAN FOR SELECT FROM WHERE Description textuelle du plan structure sous forme de table (PLAN_TABLE) Chemins d'accs Oprateurs physiques Ordre des oprateurs: structure d'arbreCours BDA (UCP/M1): Optimisation 55Exemple Schma relationnelCINEMA (ID-cinma*, Nom, Adresse)SALLE (ID-salle, Nom, Capacit+, ID-cinma+)FILM (ID-film, Titre, Anne, ID-ralisateur+)SEANCE (ID-sance*, Heure-dbut, Heure-fin, ID-salle+, ID-film)ARTISTE (ID-artiste*, Nom, Date-naissance)* : index unique sur l'attribut+ : index non-unique sur l'attributCours BDA (UCP/M1): Optimisation 56Exemple (suite) Requte: les films qui commencent 20h au Multiplex SELECT ID-filmFROM CINEMA, SALLE, SEANCEWHERE CINEMA.ID-cinma = SALLE.ID-cinma ANDSALLE.ID-salle = SEANCE.ID-salle AND CINEMA.nom = 'Multiplex' ANDSEANCE.Heure-dbut = 20 Plan d'excution produit par EXPLAIN0 SELECT STATEMENT1NESTED LOOPS2NESTED LOOPS3TABLE ACCESS FULL CINEMA4TABLE ACCESS BY INDEX ROWID SALLE5INDEX RANGE SCAN SALLE-IDCINEMA6TABLE ACCESS BY INDEX ROWID SEANCE5INDEX RANGE SCAN SEANCE-IDSALLECours BDA (UCP/M1): Optimisation 57Exemple (suite) Remarque: certaines oprations ne sont pas reprsentes Ex. Les slections sont considres automatiquement appliques sur l'accs aux articles de la table Reprsentation sous forme d'arbre du plan EXPLAIN1NESTED LOOPS2NESTED LOOPS3FULL SCANCINEMA4BY ROWIDSALLE5INDEX SCANSALLE-IDCINEMA6BY ROWIDSEANCE7INDEX SCANSEANCE-IDSALLEOprateur physiqueChemin d'accsCours BDA (UCP/M1): Optimisation 58Exemples de plans d'excution Slection sans indexSELECT * FROM CINEMA WHERE nom = 'Multiplex' Plan d'excution0 SELECT STATEMENT1 TABLE ACCESS FULL CINEMA Slection avec indexSELECT * FROM CINEMA WHERE ID-cinma = 25 Plan d'excution0 SELECT STATEMENT1TABLE ACCESS BY INDEX ROWID CINEMA2INDEX UNIQUE SCAN CINEMA-IDCINEMACours BDA (UCP/M1): Optimisation 59Slection multiple Slection conjonctive avec un indexSELECT Capacit FROM SALLE WHERE ID-cinma = 25 AND Nom = 'Salle 1' Plan d'excution0 SELECT STATEMENT1TABLE ACCESS BY INDEX ROWID SALLE2INDEX RANGE SCAN SALLE-IDCINEMA Slection conjonctive avec deux indexSELECT Nom FROM SALLE WHERE ID-cinma = 25 AND Capacit > 150 Plan d'excution0 SELECT STATEMENT1TABLE ACCESS BY INDEX ROWID SALLE2AND-EQUAL3INDEX RANGE SCAN SALLE-IDCINEMA4INDEX RANGE SCAN SALLE-CAPACITECours BDA (UCP/M1): Optimisation 60Slection disjonctive Slection disjonctive avec indexSELECT Nom FROM SALLE WHERE ID-cinma = 25 OR Capacit > 150 Plan d'excution0 SELECT STATEMENT1CONCATENATION2TABLE ACCESS BY INDEX ROWID SALLE3INDEX RANGE SCAN SALLE-CAPACITE4TABLE ACCESS BY INDEX ROWID SALLE5INDEX RANGE SCAN SALLE-IDCINEMA Pour la mme requte, un plan alternatif 0 SELECT STATEMENT1TABLE ACCESS FULL SALLECours BDA (UCP/M1): Optimisation 61Jointure avec index RequteSELECT CINEMA.Nom, Capacit FROM CINEMA, SALLE WHERE CINEMA.ID-cinma = SALLE.ID-cinma Plan d'excution0 SELECT STATEMENT1NESTED LOOPS2TABLE ACCESS FULL SALLE3TABLE ACCESS BY INDEX ROWID CINEMA4INDEX UNIQUE SCAN CINEMA-IDCINEMACours BDA (UCP/M1): Optimisation 62Jointure sans index RequteSELECT TitreFROM FILM, SEANCEWHERE Heure-dbut = 14 AND FILM.ID-film = SEANCE.ID-film Plan d'excution0 SELECT STATEMENT1MERGE JOIN2SORT JOIN3TABLE ACCESS FULL SEANCE4SORT JOIN5TABLE ACCESS FULL FILM Plan alternatif (si par exemple FILM tient en mmoire)0 SELECT STATEMENT1NESTED LOOPS2TABLE ACCESS FULL FILM3TABLE ACCESS FULL SEANCECours BDA (UCP/M1): Optimisation 63Jointure et slection avec index RequteSELECT CINEMA.Nom, Capacit FROM CINEMA, SALLE WHERE CINEMA.ID-cinma = SALLE.ID-cinma ANDCapacit > 150 Plan d'excution0 SELECT STATEMENT1NESTED LOOPS2TABLE ACCESS BY INDEX ROWID SALLE3INDEX RANGE SCAN SALLE-CAPACITE4TABLE ACCESS BY INDEX ROWID CINEMA5INDEX UNIQUE SCAN CINEMA-IDCINEMA