Télécharger la présentation
1
Optimisation des requêtes
Cours de Bases de Données Inge2-Info, IFIPS, Orasy Tao-Yuan JEN -
2
Traitement des requêtes
Analyseur de requête Arbre de requête Optimiseur de requêtes Générateur de plans Evaluateur de plans Plan d’exécution
3
Opérateurs - Sélection - Projection - Jointure - Agrégations
Composition des opérateurs Techniques : Itération Index Partitionnement
4
Sélection Sans index, non trié : O(N) Sans index, trié : O(log2(N))
- en général, rangement par index Index : groupant non-groupant (coûteux) Hachage : recherche avec une égalité Cas général : inefficace pour la disjunction
5
Projection - Collection des attributs - Suppression des duplications
coûteux, seulement pour select distinct Tri Hachage (double) Index itération * Clé de recherche : combinaison de tous les attributs
6
Jointure Opération la plus coûteuse Catégories d’implémentation :
Double itération Tri-fusion Hachage
7
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 = 100 S = 500, Ps = 80 * chaque page entrée/sortie 10 ms
8
Jointure par double itération Naï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 !
9
Jointure par double itération page à 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 !
10
Jointure par double itération bloc à bloc
RAM contient B+2 pages 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 !
11
Jointure par double itération avec 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’index sélectivité En général, moins coûteuse que double itération page à page
12
Applications de tri dans SGBD
- Order by - Création d’index - élimination de duplication - jointure Tri externe : tri-fusion + tri rapide interne
13
Jointure par tri-fusion
Trier R sur X; Trier S sur X Tri-fusionner R et S sur X Coût : M*logM + N* logN+ (M + N)
14
Jointure par hachage Coût : 2* (M + N) + (M + N)
Etape 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 g groupe Gs (correspond Gr)join Gr en utilisant g Coût : 2* (M + N) + (M + N)
15
Opérations d’agrégat - Parcours + mise à jour des variables adaptées
SUM : total AVG : total + comptage … - GROUP BY Trier sur les attributs de groupement Créer un table de hachage dans RAM
16
Optimisation - Analyseur - Arbre de requête - Réécriture de l’arbre
descendre les projection descendre les sélection - Génération de plan d’exécution choix des méthodes enchaînement ou matérialisation
17
Sous-requête imbriquée
Select S.A From S Where S.B In (Select R.B From R Where R.C = c) Select S.A From S, R Where S.B = R.B And R.C = c
18
Sous-requête corrélées
Select S.A From S Where Exists (Select * From R Where R.C = c And S.B = R.B) Select S.A From S, R Where S.B = R.B And R.C = c
19
Optimisation et sous-requête
- Optimisation locale - Manque de connaissance d’équivalence Donc, optimisation par l’utilisateur
20
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
21
Traitement des agrégats
Select S.A, Min(T.C) From T, S, R Where S.B = R.B And T.D = S.D And S.C = c Group By S.A Having Count (*) = 2; 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)))); Projection S.A, T.C ( Selection S.B = R.B, T.D = S.D, S.C = c( R*S*T)); Optimiseur
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.