1 Optimisation algébrique de requêtes relationnelles Witold LITWIN.
Transcript of 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN.
![Page 1: 1 Optimisation algébrique de requêtes relationnelles Witold LITWIN.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/1.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/2.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/3.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/4.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/5.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/6.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/7.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/8.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/9.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/10.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/11.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/12.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/13.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/14.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/15.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/16.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022082918/551d9d85497959293b8c07c4/html5/thumbnails/17.jpg)
17
FINFIN