Transcript
1
1SQL – Contraintes d’intégrité© Michel Soto
Optimisation de requêtesOptimisation de requêtes
PrincipesPrincipes
2SQL – Contraintes d’intégrité© Michel Soto
Optimisation de requêtesOptimisation de requêtes
• Résolution d’une requête�1. Traduction de la requête
� Construction d’un arbre d’opérateurs relationnels (sélection, jointure, projection, etc.)� arbre de requête
�2. Optimisation� Déterminer un plan d’exécution de coût minimal.� Deux procédures sont principalement mises en oeuvres:
� Transformation de l’arbre de requête en un arbre équivalent� Basée sur les propriétés d’associativité et de commutativité de
l’algèbre relationnelle.
� Évaluation du coût de résolution de chaque opérateur.
�3. Évaluation du plan d’exécution produit par la phase 2
2
3SQL – Contraintes d’intégrité© Michel Soto
Optimisation de requêtesOptimisation de requêtes
• Un problème complexe�Prise en compte
� des opérateurs de tri et de regroupement� des requêtes imbriquées.
Seules les requêtes simples SELECT…FROM…WHERE sont examinées ici
4SQL – Contraintes d’intégrité© Michel Soto
Implémentation de opérateurs Implémentation de opérateurs relationnels relationnels • Sélection
�Boucle (parcours séquentiel)
�Utilisation d’un index primaire pour retrouver un
tuple dont la clé est donnée ou appartient à un
intervalle donné
�Utilisation d’un index secondaire pour retrouver
un ensemble de tuples dont la clé est donnée ou
appartient à un intervalle donné.
3
5SQL – Contraintes d’intégrité© Michel Soto
Implémentation de opérateurs Implémentation de opérateurs relationnels relationnels
• Jointure�double boucle
•• ProjectionProjection�boucle,�tri puis boucle
� quand les doubles doivent être éliminés.
6SQL – Contraintes d’intégrité© Michel Soto
Coût des opérateurs relationnels Coût des opérateurs relationnels
hauteur de l’index en arbre B+ sur le constituant X de la relation R
hi(R, X)
Nombre de valeurs différentes du constituant X de la relation R
nvd(R, X)
nombre moyen de n-uplets par pagepour la relation R
nlp(R) = lp / ll(R)
longueur moyenne des n-uplets de larelation R(A1, ., An)
ll(R) = lv(R, A1) + … + lv(R, An)
longueur moyenne des valeurs du constituant X de R
lv(R, X)
cardinalité de la relation RCard (R)
longueur (en octets) d’une pagelp
temps d’écriture d’une pagetE
temps de lecture d’une pagetL
•• ParamètresParamètres
4
7SQL – Contraintes d’intégrité© Michel Soto
Coût des opérateurs relationnelsCoût des opérateurs relationnels
�Sélection� S = sel (R, c)
[card(R)/nlp(R)] × tL + [card(S)/nlp(R)] × tEboucle
coûtméthode
[card(R)/nlp(R)]×[1 + card(S)/nlp(S)]x tL + [card(J)/nlp(J)] x tE double boucle
coûtméthode
�Jointure� J = join (R, S, c)
[card(R)/nlp(R)]× tL + [(card(R)x lv(R, X))/lp] x tEboucle
coûtméthode
�Projection� P = Proj (R, X)
•• ParamètresParamètresnombre moyen de n-uplets par page pour la relation Rnlp(R) = lp / ll(R)longueur (en octets) d’une pagelptemps d’écriture d’une pagetE
temps de lecture d’une pagetL
longueur moyenne des valeurs du constituant X de Rlv(R, X)
8SQL – Contraintes d’intégrité© Michel Soto
Évaluation des résultats Évaluation des résultats
•• La principale difficulté dans le calcul du coût d’une La principale difficulté dans le calcul du coût d’une sélection ou d’une jointure est d’estimer la taille des sélection ou d’une jointure est d’estimer la taille des résultats.résultats.�Elle nécessite de connaître entre autres :
� La distribution des valeurs des attributs de chaque relation.�� En l’absence de connaissances plus précise, on suppose une En l’absence de connaissances plus précise, on suppose une
distribution uniforme.distribution uniforme.
� Le nombre de valeurs distinctes d’un attribut.� Le facteur de sélectivité des opérations booléennes
(comparaisons et connexions logiques)
5
9SQL – Contraintes d’intégrité© Michel Soto
Arbre de requête Arbre de requête
A = ‘a’
B = C
D
P
Q
SELECT Q.DFROM P, QWHERE P.A = 'a'AND P.B = C.D
10SQL – Contraintes d’intégrité© Michel Soto
Propriétés des opérateurs relationnels Propriétés des opérateurs relationnels
c1 et c2
• T1 : Éclatement et regroupement des sélections
c1
c2
• Select (GAIN, date=1989 et lieutournoi=‘Wimbledon’)
⇔• Select (Select (GAIN, date=1989), lieutournoi=‘Wimbledon’)
⇔• Select (Select (GAIN, lieutournoi=‘Wimbledon’), date=1989 )
6
11SQL – Contraintes d’intégrité© Michel Soto
Propriétés des opérateurs relationnels Propriétés des opérateurs relationnels
C (X1)
• T2 : Permutation projection/sélection
X2
X1 ∪ X2
C (X1)
X2
Si X2 ⊄ X1
• Project (Select (GAIN, date=1989 ), nomjoueur)
⇔• Project (Select (Project (GAIN, date, nomjoueur ), date=1989 ), nomjoueur)
12SQL – Contraintes d’intégrité© Michel Soto
Propriétés des opérateurs relationnels Propriétés des opérateurs relationnels
• T3 : Permutation sélection/jointure
C1 (X1)
C2 (X2)
C1 (X1) C2 (X2)
• Select (Select (Joint (GAIN, JOUEUR, nom=nomjoueur), lieutournoi=‘Wimbledon’), nom=‘Noah’ )
⇔• Joint (Select (GAIN, lieutournoi=‘Wimbledon’), Select (JOUEUR, nom=‘Noah’ ),
nom=nomjoueur)
7
13SQL – Contraintes d’intégrité© Michel Soto
Propriétés des opérateurs relationnels Propriétés des opérateurs relationnels
• T4 : Permutation projection/jointure
X2X1
Y1 ∪ Y2
Y1 ∪ Y2
X2X1
X1 ∪ Y1 X2 ∪ Y2
Si Y1 ⊄ X1ou Si Y2 ⊄ X2
• Project (Joint (GAIN, JOUEUR, nomjoueur=nom), lieutournoi, nom)
⇔• Project (Joint (Project (GAIN, nomjoueur, lieutournoi), Project (JOUEUR, nom),
nomjoueur=nom))
14SQL – Contraintes d’intégrité© Michel Soto
Propriétés des opérateurs relationnels Propriétés des opérateurs relationnels
• T5 : Commutativité de la jointure
R2R1 R2 R1
• Joint (GAIN, JOUEUR, nomjoueur=nom)
⇔• Joint (JOUEUR, GAIN, nomjoueur=nom)
8
15SQL – Contraintes d’intégrité© Michel Soto
Propriétés des opérateurs relationnels Propriétés des opérateurs relationnels
• T6 : Associativité de la jointure
R2R1
R3
R3R2
R1
• Joint (RENCONTRE, Joint (GAIN, JOUEUR, nomjoueur=nom), nom=nomgagnant)
⇔• Joint (GAIN, Joint (JOUEUR, RENCONTRE, nom=nomgagnant), nomjoueur=nom)
16SQL – Contraintes d’intégrité© Michel Soto
Choix d’un plan d’exécution Choix d’un plan d’exécution
1. Traduire la requête sous forme d’un arbre d’opérateurs relationnels.
2. Construire l’ensemble des arbres équivalents en appliquant les propriétés de commutativité et d’associativité des opérateurs.
3. A partir de chacun de ces arbres, générer tous les plans d’exécution possibles en associant à chaque opérateur chacune des méthodes de résolution applicable.
4. Évaluer le coût de chaque plan d’exécution.5. Choisir le plan de coût minimal.
9
17SQL – Contraintes d’intégrité© Michel Soto
Choix d’un plan d’exécution Choix d’un plan d’exécution
• Problème�le nombre de plans à examiner croit très vite avec le
nombre de relations utilisées par la requête
�le nombre d’ordres de jointures de n relations est :� (2 ×(n −1))!/(n −1)!
� 12 pour n = 3; 1680 pour n = 5; 665280 pour n = 7; etc.
On utilise des heuristiques pour diminuer le nombre de plans d’exécution à évaluer.
18SQL – Contraintes d’intégrité© Michel Soto
Remontée des sélections et des Remontée des sélections et des projections projections • Objectif
�Minimiser la cardinalité des relations intermédiaires pendant la résolution d’une requête.
�Hypothèses� sélections dont la condition est une conjonction de
comparaisons attribut-valeur,� projections,� jointures par comparaison de valeurs d’attributs.
10
19SQL – Contraintes d’intégrité© Michel Soto
Remontée des sélections et des Remontée des sélections et des projectionsprojections
1. Réécrire la requête sous la forme d’une suite de jointures, suivie d’une sélection, suivie d’une projection.
2. Décomposer les sélections en sélections unaires en
appliquant la transformation T1.
3. Remonter les sélections aussi haut que possible en
appliquant les transformations T2 et T3,
4. Regrouper les sélections portant sur les mêmes
relations en appliquant la transformation T1.
5. Remonter les projections sous les jointures à l’aide de la
transformation T4.
6. Éliminer les projections inutiles.
20SQL – Contraintes d’intégrité© Michel Soto
Remontée des sélections et des projections Remontée des sélections et des projections
• ExempleBIBLIOTHEQUE (NOBIB, NOM, VILLE)LIVRE (ISBN, TITRE, ANNEE, MATIERE)POSSEDE (COTE, NOBIB, ISBN)EMPRUNTE (NOM, COTE, DATE)
SELECT E.NOMFROM EMPRUNTE E, POSSEDE P, LIVRE L, BIBLIOTHEQUE BWHERE L.ANNEE > 1985AND B.VILLE = 'Marseille'AND E.COTE = P.COTEAND P.ISBN = L.ISBNAND P.NOBIB = B.NOBIB
11
21SQL – Contraintes d’intégrité© Michel Soto
Remontée des sélections et des projections Remontée des sélections et des projections
1515VILLEVILLE
2020NOMNOM
30305454373722NOBIBNOBIBBIBLIOTHEQUEBIBLIOTHEQUE
1010MATIEREMATIERE
44ANNEEANNEE
5050TITRETITRE
50 00050 000252579791515ISBNISBNLIVRELIVRE
1515ISBNISBN
22NOBIBNOBIB
300 000300 000636332321515COTECOTEPOSSEDEPOSSEDE
1010DATEDATE
1515COTECOTE
10 00010 000444445452020NOMNOMEMPRUNTEEMPRUNTE
CardCardnlpnlplllllvlvAttributAttributRelationRelation
• Exemple – paramètres de calcul
22SQL – Contraintes d’intégrité© Michel Soto
Remontée des sélections et des projections Remontée des sélections et des projections
• Exemple – paramètres de calcul�TL = TE
�Lp = 2000 octets
�Sélectivité (EMPRUNTE.DATE = '15/10/1996') = 4%�Sélectivité (LIVRE.ANNEE > 1985) = 20%�Sélectivité (BIBLIOTHEQUE.NOM = 'Marseille') = 10%
�Coût mesuré en nombre de pages accédées
12
23SQL – Contraintes d’intégrité© Michel Soto
• Exemple
Remontée des sélections et des projections Remontée des sélections et des projections
E.NOM
E.DATE= ’05/10/1996’ etL.ANNEE>1985 etB.VILLE=‘Marseille’
E.COTE=P.COTEE(10 000, 45, 225) P
P.ISBN=L.ISBNL
(300 000, 32, 4800)
COUT: 225 x (1+4800) + 385= 1 080 610
(10 000, 77, 385)
(50 000, 79, 1975)
P.NOBIB=P.NOBIBB(3900, 156, 780) (30, 37, 1)
COUT: 385 x (1+1975)+ 780 =761 540
COUT: 780 x (1+ 1) + 965 = 2525
(10 000, 193, 965)
(8, 193, 1)
COUT: 1 + 1 = 2
(8, 20, 1)
COUT TOTAL: 1 845 643
COUT: 965 +1 = 966
Le volume d une relation est exprimé par un triplet :(cardinalité, longueur d’ un n-uplet en octets, nombre de pages)
10 000 x 0,2 x 0,1 x 0,04 = 8
24SQL – Contraintes d’intégrité© Michel Soto
• Exemple
Remontée des sélections et des projections Remontée des sélections et des projections
E(10 000, 45, 225) P(300 000, 32, 4800)
E.COTE=P.COTE
P.ISBN=L.ISBN
L
COUT: 33 621
(50 000, 79, 1975)
P.NOBIB=P.NOBIB
E.DATE= ’05/10/1996’ COUT: 234
E.NOM, E.COTE
(400, 45, 9)
COUT: 16
(400, 35, 7)
COUT: 2370
L.ISBN
(10 000, 79, 395)
(10 000, 15, 75)
L.ANNEE>1985
COUT: 470
B(30, 37, 1)
COUT: 2
B.NOBIB
(3, 37, 1)
(3, 2, 1)
B.NOM=‘Marseille’
COUT: 2
(400, 67, 14)
COUT: 1 068
(80, 82, 4)
COUT: 3
E.NOM, P.NOBIBCOUT: 5
(80, 22, 1)
(8, 24, 1)
E.NOMCOUT: 2
(8, 20, 1)COUT TOTAL: 37 793
top related