Upload
marin-gon
View
102
Download
0
Embed Size (px)
Citation preview
1
Optimisation algébrique de Optimisation algébrique de requêtes relationnellesrequê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
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
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
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)
6
EvaluationEvaluation
• Stratégie 2 :
| T = SP WHERE P# = P1 | = 5 (en moyenne)
| T' = S JOIN T | T | = 5
| T'' = T' [SNAME] |
{T} '
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 !
8
Graphe de la requêteGraphe de la requête
WHERE P# = 'P1'
[SNAME]
S SP
Stratégie 1
9
Graphe de la requêteGraphe de la requête
WHERE P# = 'P1'
[SNAME]
S SP
Stratégie 2
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
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
12
Jointures multivaluéesJointures multivaluéesX JOIN Y JOIN Z JOIN VX JOIN Y JOIN Z JOIN V
X Y
Z
V
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
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
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)
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
17
FINFIN