‰valuation et optimisation de requtes

  • View
    220

  • Download
    0

Embed Size (px)

Text of ‰valuation et optimisation de requtes

  • valuation et optimisation de requtes

    Serge Abiteboul partir de tranparents de Philippe Rigaux, Dauphine

    INRIA Saclay

    April 3, 2008

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 1 / 61

  • But de ce cours

    Soit une requte. Le but est de lvaluer efficacement.

    Comment on passe de SQL (dclaratif) un arbre doprations(algbrique).Comment loptimiseur obtient plusieurs plans dexcution possibles.Comment il effectue un choix parmi ces plans.Comment la requte est ensuite value.

    Ce sont des techniques de base, implantes dans tout SGBD relationnel, etdans ORACLE en particulier.

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 2 / 61

  • Squencement

    SQL, QBE,...

    COMPILATEUR ; Requte algrique

    OPTIMISEUR ; Requte optimise

    MACHINE ALGEBRIQUE

    Rsultat

    Oprations1 compilateur : traduction de la requte dans lalgbre2 optimiseur : trouver un plan dexcution tel que le cot dexcution soit

    minimal

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 3 / 61

  • Introduction loptimisation des performances

    tapes du traitement dune requte

    Toute requte SQL est traite en trois tapes :1 Analyse et traduction de la requte. On vrifie quelle est correcte, et on

    la rcrit sous forme de requte algbrique avec des oprations.2 Optimisation :

    I On le rcrit en requtes quivalentesI On annote les oprateurs avec des choix dalgorithmes particuliersI On obtient des plans dexcution dont on value les cotsI On choisit le meilleur.

    3 Excution de la requte : le plan dexcution est compil et excut.

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 4 / 61

  • Introduction loptimisation des performances

    La base mathmatique: quivalences algbriquesCommutativit et associativit de la jointure

    E1 1 E2 = E2 1 E1,(E1 1 E2) 1 E3 = E1 1 (E2 1 E3).

    Cascade de projections

    A1,...,An (B1,...,Bm (E)) = A1,...,An (E)

    Cascade de slections

    F1(F2(E)) = F1F2(E)

    Commutation slection et projectionSi F ne porte que sur A1, ...,An,

    A1,...,An (F (E)) = F (A1,...,An (E))

    Si F porte aussi sur B1, ...,Bm,

    A1,...,An (F (E)) = A1,...,An (F (A1,...,An ,B1,...,Bm (E)))

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 5 / 61

  • Introduction loptimisation des performances

    quivalences algbriques (2)

    Commutation slection et 1

    F (E1OPE2) = F (E1)OPF (E2)

    Commutation projection et

    A1,...,An (E1OPE2) = A1,...,An (E1)OPA1,...,An (E2)

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 6 / 61

  • Introduction loptimisation des performances

    quivalence logique

    ExempleSELECT *FROM VIN VWHERE ((V.DEGRE = 12) OR (V.CRU = Morgon) OR (V.CRU = Chenas))AND NOT ((V.CRU = Morgon) OR (V.CRU = Chenas));

    Proprit logique: ((P QR)(QR)) (P(QR))

    Expression simplifie de la requteSELECT *FROM VIN VWHERE ((V.DEGRE = 12)AND NOT ((V.CRU = Morgon) OR (V.CRU = Chenas));

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 7 / 61

  • Introduction loptimisation des performances

    Equivalence : contraintes dintgrit

    EXEMPLE1Q1 = v#,nom(vin) 1 v#,cepage(vin)

    Si v# nomQ1 vin et la jointure est inutileEXEMPLE2 : REQUETE SQLSELECT *FROM VINWHERE (CRU = Juranon) AND (DEGRE 10);

    CONTRAINTE : CRU = Juranon DEGRE 12

    SELECT * FROM VINWHERE (CRU = Juranon) AND (DEGRE 10) AND (DEGRE 12)Rponse vide

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 8 / 61

  • Introduction loptimisation des performances

    Quelle optimisation ?

    Optimiser quelles ressources : processeurs, accs disques, communication(BD distribues)

    Optimiser quoi : le temps de rponse une requte; le nombre de requtestraites par unit de temps - dbit.

    On demande en gnral que le temps doptimisation soit ngligeable parrapport lexcution de la requte.

    Cot de loptimisation: faible - peu daccs disquesGain: accs disque lexcution

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 9 / 61

  • Introduction loptimisation des performances

    Quelle information on peut utiliser ?

    Le traitement sappuie sur les lments suivants :1 Le schma logique de la base, description des tables, des contraintes

    dintgrit2 Le schma physique de la base, indexes et chemins daccs, tailles des

    blocs3 Des statistiques : taille des tables, des index, distribution des valeurs

    R1 10000 nuplets (site A) et R2 200 nuplets (site B)pour raliser R1 1 R2 - il vaut mieux transfrer R2

    4 Des statistiques : taux de mises--jour, workload5 Les particularits du systme : paralllisme, processeurs spcialiss

    (e.g. filtre)6 Des algorithmes : il peuvent diffrer selon les systmes

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 10 / 61

  • Introduction loptimisation des performances

    Vue gnrale

    Un module du SGBD, loptimiseur, est charg de :1 Prendre en entre une requte, et la mettre sous forme doprations2 Se fixer comme objectif loptimisation dun certain paramtre (en gnral

    le temps dexcution)3 construire un programme sappuyant sur les index existant, et les

    oprations disponibles4 Choisir le bon plan

    I Construire des plans possiblesI Evaluer (grossirement) leurs cotsI Choisir le meilleursI Problme: il y a trop de plans possiblesI Utiliser des heuristiques pour ne pas explorer tout lespace des possibilits.

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 11 / 61

  • Introduction loptimisation des performances

    Loptimisation sur un exemple

    Considrons le schma :

    CINEMA(Cinema,Adresse,Gerant)SALLE(Cinema,NoSalle,Capacite)

    avec les hypothses :1 Il y a 300 n-uplets dans CINEMA, occupant 30 pages.2 Il y a 1200 n-uplets dans SALLE, occupant 120 pages.

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 12 / 61

  • Introduction loptimisation des performances

    Expression dune requte

    On considre la requte : Adresse des cinmas ayant des salles de plus de150 placesEn SQL, cette requte sexprime de la manire suivante :

    SELECT AdresseFROM CINEMA, SALLEWHERE capacit > 150AND CINEMA.cinma = Salle.cinma

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 13 / 61

  • Introduction loptimisation des performances

    En algbre relationnelle

    Traduit en algbre, on a plusieurs possibilits. En voici deux :1 Cinema(Capacite>150(CINEMA 1 SALLE))2 Cinema(CINEMA 1 Capacite>150(SALLE))

    Soit une jointure suivie dune slection, ou linverse.

    NB : on peut les reprsenter comme des arbres.

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 14 / 61

  • Introduction loptimisation des performances

    valuation des cots

    On suppose quil ny a que 5 % de salles de plus de 150 places.1 Jointure : on lit 3 600 pages (120x30); Slection : on obtient 5 % de 120

    pages, soit 6 pages.Nombre dE/S : 3 600 + 120x2 + 6 = 3 846.

    2 Slection : on lit 120 pages et on obtient 6 pages. Jointure : on lit 180pages (6x30) et on obtient 6 pages.Nombre dE/S : 120 + 6 + 180 + 6 = 312.

    la deuxime stratgie est de loin la meilleure !

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 15 / 61

  • Introduction loptimisation des performances

    Un truc simple qui marche : combiner des oprateurs

    Des cascades de projections/slections peuvent se rcrire en une oprationde filtrage (qui ne demande quun scan des donnes)

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 16 / 61

  • Introduction loptimisation des performances

    Un autre truc qui marche: pousser projections/slectionsPourquoi ? Ce sont des rducteurs souvent radicaux

    Relation R et critre de slection de probabilit p

    O(c(R)) = p O(R)

    n tuples de longueur k et projection sur X de longueur k < kO(X (R)) = O(R) (K /K )mme moins aprs limination de dupliquets

    Pour les jointures, cest le contraireRelations R1,R2 probabilit de jointure p

    O(R1 1 R2) = p O(R1)O(R2)

    Dans le pire des cas O(R1)O(R2)Attention : pas toujours vrai (e.g., si p trs petit)

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 17 / 61

  • Introduction loptimisation des performances

    Un autre truc qui marche: rordonner les jointures

    Exemple : quels inspecteurs a eu laligot ?

    Q1 = inom(nom=aligote(vin) 1 (inspecteur 1 test))

    Hypothse: 40 inspecteurs + 500 tests40 1 500 500 puis 1 1 500 10

    il vaut mieux faire

    Q2 = inom((nom=aligote(vin) 1 test) 1 inspecteur)

    1 1 500 10 puis 10 1 40 10

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 18 / 61

  • Introduction loptimisation des performances

    Choisir le bon algorithme

    Toutes les oprations peuvent tre coteuse

    Il faut choisir le bon algorithme pour la raliser

    Exemple : Trouver lenregistrement de Marie MartinUtiliser un index sur nom sil y en a un

    Fin de ce cours : les algorithmes pour le tri et la jointure

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 19 / 61

  • Introduction loptimisation des performances

    Le schma de la base

    Film (idFilm, titre, anne, genre, rsum, idMES, codePays)Artiste (idArtiste, nom, prnom, anneNaissance)Role (idActeur, idFilm, nomRle)Internaute (email, nom, prnom, rgion)Notation (email, idFilm, note)Pays (code, nom, langue)

    Serge (INRIA Saclay) valuation et optimisation de requtes April 3, 2008 20 / 61