Optimisation algébrique de requêtes relationnelles Witold LITWIN
Exemple canon SP S P
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
Evaluation 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
Evaluation 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)
Evaluation Stratégie 2 : | T = SP WHERE P# = P1 | = 5 (en moyenne) | T' = S JOIN T | T | = 5 | T'' = T' [SNAME] | {T} '
Comparaison 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 !
Graphe de la requête Stratégie 1 [SNAME] WHERE P# = 'P1' S SP
Graphe de la requête Stratégie 2 [SNAME] WHERE P# = 'P1' S SP
Règle principale d'optimisation algébrique relationnelle Les restrictions et les projections doivent en général être poussées vers le bas de l'arbre
Quelques 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
Jointures multivaluées X JOIN Y JOIN Z JOIN V
Jointures multivaluées X JOIN Y JOIN Z JOIN V Traitement Parallèle V Z Y Z V X Y X
Jointures multivaluées X JOIN Y JOIN Z JOIN V Jointures parallèles hachées V Z X Y X Y Z V
Limites 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)
Conclusion 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
FIN