Optimisation de requêtes Principes

12
1 1 SQL – Contraintes d’intégrité © Michel Soto Optimisation de requêtes Optimisation de requêtes Principes Principes 2 SQL – Contraintes d’intégrité © Michel Soto Optimisation de requêtes Optimisation 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

Transcript of Optimisation de requêtes Principes

Page 1: Optimisation de requêtes Principes

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

Page 2: Optimisation de requêtes Principes

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

Page 3: Optimisation de requêtes Principes

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

Page 4: Optimisation de requêtes Principes

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)

Page 5: Optimisation de requêtes Principes

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 )

Page 6: Optimisation de requêtes Principes

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)

Page 7: Optimisation de requêtes Principes

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)

Page 8: Optimisation de requêtes Principes

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.

Page 9: Optimisation de requêtes Principes

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.

Page 10: Optimisation de requêtes Principes

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

Page 11: Optimisation de requêtes Principes

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

Page 12: Optimisation de requêtes Principes

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