optimisation des requêtes cours de bases de données inge2-info, ifips, orasy 2006-07 tao-yuan jen...
TRANSCRIPT
![Page 1: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/1.jpg)
Optimisation des requêtes
Cours de Bases de Données
Inge2-Info, IFIPS, Orasy
2006-07
Tao-Yuan JEN - [email protected]
![Page 2: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/2.jpg)
Traitement des requêtes
Requête
Analyseur de requête
Arbre de requête
Optimiseur de requêtes
Evaluateurde plans
Générateurde plans
Plan d’exécution
![Page 3: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/3.jpg)
Opérateurs - Sélection- Projection- Jointure- Agrégations
Composition des opérateurs
Techniques :ItérationIndexPartitionnement
![Page 4: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/4.jpg)
SélectionSans index, non trié : O(N)Sans index, trié : O(log2(N))
- en général, rangement par indexIndex :
groupant non-groupant (coûteux)
Hachage : recherche avec une égalité
Cas général : inefficace pour la disjunction
![Page 5: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/5.jpg)
Projection
- Collection des attributs- Suppression des duplications
coûteux, seulement pour select distinct
TriHachage (double)Index itération
* Clé de recherche : combinaison de tous les attributs
![Page 6: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/6.jpg)
Jointure
Opération la plus coûteuse
Catégories d’implémentation :Double itérationTri-fusionHachage
![Page 7: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/7.jpg)
Evaluation de la jointure
Coût = Nb de pages entrée/sortie
Relation page fichier
R Pr n-uplets M pages
S Ps n-uplets N pages
Exemple R = 1000, Pr = 100S = 500, Ps = 80
* chaque page entrée/sortie 10 ms
![Page 8: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/8.jpg)
Jointure par double itérationNaïve
Pour chaque r dans R pour chaque s dans S
si r.X = s.X alors (r,s) dans Res
Coût : M + Pr*M*N
R : relation externe, S : relation interne
140 heures pour l’exemple !
![Page 9: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/9.jpg)
Jointure par double itérationpage à page
Pour chaque page pr dans R pour chaque page ps dans S
faire pr join ps dans Res
Coût : M + M*N
* Relation externe plus petite
501,500 pages : 1,4 heures pour l’exemple !
![Page 10: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/10.jpg)
Jointure par double itérationbloc à bloc
Pour chaque Bloc Br de B pages dans R pour chaque page ps dans S
faire Br join ps dans Res
Coût : M + N*(M/B)
Si B = 100, alors 6000 pages : 1 minutes pour l’exemple !
RAM contient B+2 pages
![Page 11: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/11.jpg)
Jointure par double itérationavec index
Pour chaque r dans R chercher s par index dans S
si r.X = s.X alors (r,s) dans Res
Coût : type d’indexsélectivité
En général, moins coûteuse que double itération page à page
![Page 12: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/12.jpg)
Applications de tri dans SGBD
- Order by- Création d’index- élimination de duplication- jointure
Tri externe :tri-fusion + tri rapide interne
![Page 13: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/13.jpg)
Jointure par tri-fusion
Trier R sur X; Trier S sur XTri-fusionner R et S sur X
Coût : M*logM + N* logN+ (M + N)
![Page 14: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/14.jpg)
Jointure par hachageEtape 1 : hachage de R sur X et hachage de S sur X avec fonction h
Etape 2 : Pour chaque groupe Gr de R
Hachage de Gr avec une autre fonction ggroupe Gs (correspond Gr)join Gren utilisant g
Coût : 2* (M + N) + (M + N)
![Page 15: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/15.jpg)
Opérations d’agrégat
- Parcours + mise à jour des variables adaptéesSUM : totalAVG : total + comptage…
- GROUP BYTrier sur les attributs de groupementCréer un table de hachage dans RAM
![Page 16: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/16.jpg)
Optimisation
- Analyseur- Arbre de requête - Réécriture de l’arbre
descendre les projectiondescendre les sélection
- Génération de plan d’exécutionchoix des méthodesenchaînement ou matérialisation
![Page 17: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/17.jpg)
Sous-requête imbriquée
Select S.AFrom SWhere S.B In (Select R.B
From R Where R.C = c)
Select S.AFrom S, RWhere S.B = R.B And R.C = c
![Page 18: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/18.jpg)
Sous-requête corrélées
Select S.AFrom SWhere Exists (Select *
From R Where R.C = c
And S.B = R.B)
Select S.AFrom S, RWhere S.B = R.B And R.C = c
![Page 19: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/19.jpg)
Optimisation et sous-requête
- Optimisation locale- Manque de connaissance d’équivalence
Donc, optimisation par l’utilisateur
![Page 20: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/20.jpg)
Réécriture
- traitement des agrégats- relation externe à gauche - gauche- profond style pour la jointure de
plusieurs relations- descendre la sélection et la projection
![Page 21: Optimisation des requêtes Cours de Bases de Données Inge2-Info, IFIPS, Orasy 2006-07 Tao-Yuan JEN - tao-yuan.jen@u-cergy.fr](https://reader036.vdocuments.mx/reader036/viewer/2022081507/551d9d7d497959293b8b4b12/html5/thumbnails/21.jpg)
Traitement des agrégats
Projection S.A, Min(T.C) (Having_Count(*)=2(Group_By S.A(Selection S.B = R.B, T.D = S.D, S.C = c( R*S*T))));
Select S.A, Min(T.C)From T, S, RWhere S.B = R.B And T.D = S.D And S.C = cGroup By S.AHaving Count (*) = 2;
Projection S.A, T.C (Selection S.B = R.B, T.D = S.D, S.C = c( R*S*T));
Optimiseur