1 EQUINOXE Communications G. Gardarin Optimisation de Requêtes u 1. Introduction u 2. Arbres...

Post on 03-Apr-2015

103 views 0 download

Tags:

transcript

1

G. Gardarin

Optimisation de Requêtes 1. Introduction 2. Arbres relationnels 3. Restructuration algébrique 4. Le cas de l’objet 5. Modèle de coût 6. Choix du meilleur plan 7. Conclusion

2

G. Gardarin

1. ARCHITECTURE TYPE SGBD

ANALYSEUR

META-BASE

CONTROLE

OPTIMISEUR

EXECUTABLE

SYNTAXESEMANTIQUESCHEMA

VUESINTEGRITEAUTORISATIONS

ORDONNANCEMENTELABORATIOND'UN PLAN

EXECUTIONMETHODES D'ACCES

3

G. Gardarin

ETAPES DE L'OPTIMISATION (1) Obtention d’une représentation canonique (2) Réécriture = transformation par :

simplification

ordonnancement des opérations élémentaires

(3) Planning = construction des plans d'exécution candidats choix des algorithmes pour chaque opérateur,

calcul du coût de chaque plan,

choix du meilleur plan.

Etapes 1 et 2 : indépendantes des données Etape 3 : dépendante des données

4

G. Gardarin

2. ARBRES RELATIONNELS

PRODUIT CARTESIEN

JOINTURE

RESTRICTION

V. CRU "BEAUJOLAIS"

PROJECTION

V.NV, V.CRU

DIFFERENCE

B2B1

UNION

B1 B2

U

V

=

=A. NV V. NV

A V

A V

V

TRI

V

V.CRU, V.MILL

AGREGAT

V

V.CRU, V.MILL

COUNT(*),AVG(DEGRE)

5

G. Gardarin

EXEMPLE D'ARBRE

RESULTAT

B.NOM, B.PRENOM

A.DATE

V.CRU

01-01-90

"MACON"

>

=

A.NV V.NV=

VINS V

=

B.NB A.NB

B.VILLE "MACON"

BUVEURS B

=

ABUS A

Coût d'exécution: 10 millions de buveurs dont 1 m à Paris

10 millions d'abus dont 10000 de Volnay

1000 vins

10 m + 10m * 1m + 10 m * 1000

+ 10 m + 10000 + …

de l'ordre de 10 ** 13

comparaisons de tuples !!!

6

G. Gardarin

=R. NV V. NV

R V

=P.NP R.NP

P

=

V.MILLESIME = 1976

P.REGION « Bordelais »

V.DEGRE 14

V.CRU

Arbre linéaire droitSELECT V.CRU

FROM PRODUCTEURS P, VINS V, PRODUIT R

WHERE V.MILLESIME = 1976 AND V.DEGRE 14

AND P.REGION = « BORDELAIS » AND P.NP = R.NP

AND R.NV = V.NV.

7

G. Gardarin

Typologie des arbres

Arbre linéaire droit Arbre linéaire gauche Arbre ramifié

8

G. Gardarin

Autre exemple

SELECT P.NOM, SUM(L.PRIX * (1-L.DISCOUNT))

FROM CLIENTS C, COMMANDES O, LIGNES L, FOURNISSEUR F, PAYS P, CONTINENTS T

WHERE C.NUMCLI = O.NUMCLI

AND O.NUMCOM = L.NUMCO

AND L.NUMFOU = F.NUMFOU

AND C.NUMPAYS = F.NUMPAYS

AND F.NUMPAYS = P.NUMPAYS

AND P.NUMCONT = T.NUMCONT

AND T.NOM = « EUROPE »

AND O.DATE $D1 AND O.DATE < $D1 + INTERVAL 1 YEAR

GROUP BY P.NOM

ORDER BY RECETTE DESC ;

RECETTE

P.NOM, RECETTE

P.NOM

C.NUMCLI = O.NUMCLI

O.NUMCOM = L.NUMCO

$D1 O.DATE <$D1+1

L.NUMFOU = F.NUMFOU

C.NUMPAYS = F.NUMPAYS

F.NUMPAYS = P.NUMPAYS

L

C

FP.NUMCONT = T.NUMCONT

P

T

OT.NOM = « EUROPE »

9

G. Gardarin

3. RESTRUCTURATION ALGEBRIQUE Problème :

suivant l'ordre des opérateurs algébriques dans un arbre, le coût d'exécution est diffèrent

Pourquoi? 1. le coût des opérateurs varient en fonction du volume des données

traitées

i.e., plus le nombre de tuple des relations traitées est petit, plus les coûts cpu et d'E/S sont minimisés

2. certains opérateurs diminuent le volume des données

e.g., restriction et projection

10

G. Gardarin

Commutativité des Jointures

R S S R

11

G. Gardarin

Associativité des jointures

R S

T

S T

R

Il existe N!/2 arbre de jointure de N relations. Parmi les jointures, certaines sont des produits cartésiens.

12

G. Gardarin

Groupage des Restrictions

Ai = a

Aj = b

Ai = aet

Aj = b

13

G. Gardarin

Semi-commutativité des Projections

Ai = a

A1, … Ap

Ai = a

A1, … Ap

Ai,A1,… Ap

Il est possible de descendre les projections, mais les attributs utilisés dans la suite doivent être conservés !!!

14

G. Gardarin

Règles de Restructuration (1) Commutativité des jointures (2) Associativité des jointures (3) Groupabilité des restrictions (4) Semi-commutativité des projections et restrictions (5) Semi-commutativité des restrictions et jointures (6) Semi-distributivité des projections / jointures (7) Distributivité des restrictions / unions ou différences (8) Distributivité des projections / unions

15

G. Gardarin

Heuristique d'Optimisation Appliquer d'abord les opérations réductrices (restrictions

et projections) en les groupant sur chaque relation. 1. Dégrouper les restrictions (Règle 3')

2. Descendre les restrictions (Règles 4, 5 et 7)

3. Grouper les restrictions aux feuilles (Règle 3)

4. Descendre les projections (Règles 4, 6 et 8)

L'ordre des unions, différences et jointures reste inchangé !!!

16

G. Gardarin

Exemple d'Arbre Optimisé

B.NOM, B.PRENOM

A.DATE

V.CRU

01-01-83

"VOLNAY"

>=

A.NV V.NV=

V

Résultat

=

B.NB A.NB

B.VILLE "PARIS"

B

=

A

B.NB, B.NOM, B.PRENOM A.NB, A.NV

V.NV

B.NOM, B.PRENOM,A.NV

Coût d'exécution:

10 m + 1m * 100000 + 1 m * 1000 + …

de l'ordre de 10 ** 11 comparaisons de tuples !

17

G. Gardarin

Ordonnancement des Jointures HEURISTIQUES :

Choix des relations de taille minimum

Jointures pré-calculés d ’abord (indexes)

Semi-jointures plus réductrices

ORDONNANCEMENT DES AGREGATS Permutations difficiles

Profiter des tris des jointures, dédoublement, etc..

Gains importants pour MIN et MAX

18

G. Gardarin

4. LE CAS DE L ’OBJET Les mêmes règles s’appliquent

cas dégénéré des objets « plats »

Il faut en plus traiter jointures par parcours de références

méthodes et polymorphisme (?)

collections (imbriquées)

Peu d’optimiseurs objets puissants

19

G. Gardarin

Algèbre d'objets L’algèbre relationnelle est étendue :

RESTRICTION : Application d'un critère (avec méthodes) à une classe

PROJECTION : Application d'attributs ou de méthodes à une classe

JOINTURE_REF : Jointure par parcours de référence

JOINTURE_VAL : Jointure par comparaison de valeurs

NEST : Groupage d'une collection par rapport à d'autres attributs

UNNEST : Aplatissage d'un attribut en une collection

FLATEN : Suppression d'un niveau de collections

UNION : Union d'objets dans une même classe

DIFFERENCE : Suppression des objets d'une classe d'une autre classe

Langage cible d ’un optimiseur de requêtes OO

20

G. Gardarin

Exemple de plan d'exécution

Employé

age() < 50 Groupe

directeur

ville = "Paris" couleur = "Rouge"

Véhicule

Fabriquant

numéro

Exemple :SELECT V.numéro

FROM V in Vehicule, G in V.Fabriquant, E in G.directeur

WHERE E.age()) < 50 AND V.couleur = « rouge » AND G.ville = « Paris »

Plusieurs plans candidats: descente des projections

sélections d'abord (?)

ordonnancement des jointures

coût des méthodes

21

G. Gardarin

Problème de l'Ordonnancement Il faut pouvoir ordonner jointures, union, différence,

agrégat, … en fonction des tailles des relations arguments Il faut pouvoir prendre en compte les algorithmes par

index afin de les favoriser (sélection, jointure sur index, parcours)

Nécessité de développer un modèle de coût général permettant d'évaluer le coût d'un plan, c'est-à-dire d'un arbre annoté par des choix d'algorithmes.

Annotation: Marque associée à un noeud indiquant l'algorithme à utiliser pour

l'opérateur avec ses paramètres (index, hachage, …)

22

G. Gardarin

5. MODELE DE COUT Facteur de sélectivité

Proportion de tuples du produit cartésien des relations touchées qui satisfont une condition.

Exemple:

SELECT *

FROM R1, R2

==> s =1

SELECT *

FROM R1

WHERE A = valeur

==> s = 1/NDIST(A) avec un modèle uniforme

23

G. Gardarin

Sélectivité des Restrictions TAILLE ((R)) = s * TAILLE(R) avec:

s (A = valeur) = 1 / NDIST(A)

s(A > valeur) = (max(A) - valeur) / (max(A) - min(A))

s(A < valeur) = (valeur - min(A)) / (max(A) - min(A))

s (A IN liste valeurs) = (1/NDIST(A)) * CARD(liste valeurs)

s(P et Q) = s(P) * s(Q)

s(P ou Q) = s(P) + s(Q) - s(P) * s(Q)

s( not P) = 1 - s(P)

Le coût dépend de l'algorithme (index, hachage ou balayage).

24

G. Gardarin

Sélectivité des Projections TAILLE(x(R)) = p(x) * (1-d) * TAILLE(R)

avec p(x) = Larg(x) / Larg(R)

d = probabilité de doubles

CARD(X) / CARD(DOM(X))**2

25

G. Gardarin

Sélectivité des Jointures TAILE( R1 |><| R2) = p * TAILLE(R1) * TAILLE(R2)

p dépend du type de jointure et de la corrélation des colonnes :p = 0 si aucun tuple ne joint

p = 1 / MAX(NDIST(A),NDIST(B)) si distribution uniforme équiprobable des attributs A et B sur un même domaine

p = 1 si produit cartésien

L'algorithme change radicalement les coûts linéaire si index,

produit des tailles si boucles imbriquées.

26

G. Gardarin

Le calcul des tailles Taille des tables de base dans le catalogue Calcul des tailles à la compilation

application du coefficient de sélectivité

hypothèse d ’uniformité

Possibilité d’histogrammes RunStat(<Table>, <attribut>)

Stockage dans le catalogue de l’histogramme de distribution de l ’attribut

Utilisation par le modèle de coût

27

G. Gardarin

6. CHOIX DU MEILLEUR PLAN

Générateur de

Plans

Arbre d'opérations

Heuristiques

de choix

Plan d'exécution

Optimal

Schéma interne

Plans d'exécution

Stratégie de

Recherche

Bibliothèque de

transformations

Modèle de coût

28

G. Gardarin

Sélectivité minimum

Rel = liste des relations à joindre ;

p = plus petite relation ;

Tant que Rel non vide {

R = relation de selectivité minimum de Rel ;

p = join(R,p) ;

Relations = Relations - R ; } ;

Return(p) ;

29

G. Gardarin

Programmation Dynamique

PlanOuverts = liste de tous les plans mono-relation possible ;

Eliminer tous les plans équivalents excepté le moins coûteux ;

Pour chaque PlanOuverts p {

Pour chaque opérateur n’appartenant pas au plan p {

Etendre le plan en ajoutant cet opérateur ;

Calculer le coût du nouveau plan ;

Insérer le nouveau plan dans la liste Nouveaux ; }

Eliminer tous les plans équivalents excepté le moins coûteux ;

Transférer les plans Nouveaux dans PlanOuverts ; }

Retourner le plan optimal ;

30

G. Gardarin

Illustration DP

ScanR1

JoinH R2

JoinH R3

JoinH R3

JoinS R2

JoinS R3

JoinH R2JoinS R3 JoinS R2

31

G. Gardarin

Différentes Stratégies

Stratégiede recherche

AléatoireEnumérative

Exhaustive Augmentation GénétiqueAméliorationitérative

Recuitsimulé

32

G. Gardarin

Amélioration itérativeFunction Iterative(Query)

p:= Parse(Query) ; // Set the initial plan

S := {} ; // S is the set of locally optimum plans

while not StopCond()

{ nmoves := 0;

while nmoves < MaxMoves(Query) and Transformable(p)

{ p' := Transform (p) ; // Apply a transformation rule

if Cost(p') < Cost(p) then

{ p ::= p';

nmoves ::= nmoves + 1;

}

Insert (S, p') ; // Maintain the set of interesting plans

p := Random(Parse(Query)); // Generate a new initial plan at random

}

}

return Optimal(S) ; // Select best plan among all generated ones }

33

G. Gardarin

Illustration II

Parse(Query)

Profitabler1

Profitabler2

SELECTMINIMAL

COSTPLAN

Profitabler'1

Profitabler"1

Profitabler"2

Rand(Parse(Query)) Rand(Rand((Parse(Query)))

34

G. Gardarin

7. CONCLUSION Problème essentiel des SGBD

Nécessité d’un modèle de coût

Approches par compilation dans un langage d’accès (opérateurs avec annotations)

Stratégies de choix aléatoires