17
1 Optimisation Optimisation algébrique de requêtes algébrique de requêtes relationnelles relationnelles Witold LITWIN

1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

Embed Size (px)

Citation preview

Page 1: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

1

Optimisation algébrique de Optimisation algébrique de requêtes relationnellesrequêtes relationnelles

Witold LITWIN

Page 2: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

2

S# SNAME STATUS CITYS1 Smith 20 London

S2 Jones 10 Paris

S3 Blake 30 Paris

S4 Clark 20 London

S5 Adams 30 Athens

P# PNAME COLOR WEIGHT CITYP1 Nut Red 12 London

P2 Bolt Green 17 Paris

P3 Screw Blue 14 Rome

P4 Screw Red 12 London

P5 Cam Blue 19 Paris

P6 Cog Red 19 London

S# P# QTYS1 P1 300

S1 P2 200

S1 P3 400

S1 P4 200

S1 P5 100

S1 P6 100

S2 P1 300

S2 P2 400

S3 P2 200

S4 P2 200

S4 P4 300

S4 P5 400

Exemple canon

S

P

SP

Page 3: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

3

Pourquoi optimiser algébriquement ?Pourquoi optimiser algébriquement ?

• |S| = 100 et |SP| = 500

• SELECT SNAME FROM S SP WHERE S.S# = SP.S# AND P# = 'P1' ;

• Strategies possibles :

1. ((S join SP ) where P# = 'P1' ) [SNAME]

2. ( S join (SP where P# = 'P1' )) [SNAME]

Autres

Page 4: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

4

Evaluation de performancesEvaluation de performances

• Criteria: prix de mémoire et de CPU– |T| : taille du résultat intermédiaire T– {T} : nombre de tuples examinés pour

produire T

Page 5: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

5

EvaluationEvaluation• Stratégie 1:

| T = S JOIN SP | SP| = 500

| T' = T WHERE P# = P1 | = 5 (en moyenne)

| T'' = T' [SNAME] |

{T} boucle imbriquée)

'''(en moyenne)

Page 6: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

6

EvaluationEvaluation

• Stratégie 2 :

| T = SP WHERE P# = P1 | = 5 (en moyenne)

| T' = S JOIN T | T | = 5

| T'' = T' [SNAME] |

{T} '

Page 7: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

7

ComparaisonComparaison

• Stratégie 2 est beaucoup plus efficace que Stratégie 1:

500 : 5 = 100 pour la mémoire temporaire

50505 : 1005 = 50 pour le CPU

Optimisation est importante !

Page 8: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

8

Graphe de la requêteGraphe de la requête

WHERE P# = 'P1'

[SNAME]

S SP

Stratégie 1

Page 9: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

9

Graphe de la requêteGraphe de la requête

WHERE P# = 'P1'

[SNAME]

S SP

Stratégie 2

Page 10: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

10

Règle principale Règle principale d'optimisation algébrique d'optimisation algébrique

relationnellerelationnelle

Les restrictions et les projections doivent en général être poussées vers le bas de l'arbre

Page 11: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

11

Quelques autres règles utilesQuelques autres règles utiles

• Toute règle d'amélioration algébrique, si prouvée valable dans certain cas

• Plusieurs opérations en même temps– jointure et projection

– jointure et restriction

– restriction et projection

• Une projection sur l'attribut de jointure poussée sous la jointure

• Si mémoire est + chère que CPU, alors pousse max de projections vers le bas

Page 12: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

12

Jointures multivaluéesJointures multivaluéesX JOIN Y JOIN Z JOIN VX JOIN Y JOIN Z JOIN V

X Y

Z

V

Page 13: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

13

Jointures multivaluéesJointures multivaluéesX JOIN Y JOIN Z JOIN VX JOIN Y JOIN Z JOIN V

X Y Z VX Y

Z

V

Traitement Parallèle

Page 14: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

14

Jointures multivaluéesJointures multivaluéesX JOIN Y JOIN Z JOIN VX JOIN Y JOIN Z JOIN V

X Y Z VX Y

Z

V

Jointures parallèles hachées

Page 15: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

15

Limites d'optimisation algébriqueLimites d'optimisation algébrique

• Le choix de stratégie optimale dépend aussi de structures physiques:– hachées ou ordonnées ?– boucle imbriquées pour jointures ou "sort-merge"

(tri-interclassement) ou hachage ?– pagination ou la base est en RAM – indexation

• Solution générale :– choix de solution à moindre coût (System R)

Page 16: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

16

ConclusionConclusion

• Optimisation algébrique est la pierre angulaire des SGBD relationnels

• Aucune règle ne s'applique à tous les cas– c'est pourquoi on parle souvent de règles d'amélioration

seulement

• L'optimisation physique est au moins aussi importante

• Le traitement parallèle ou distribué est d'une importance déterminante pour des grandes tables

Page 17: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN

17

FINFIN