La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Optimisation des requêtes

Présentations similaires


Présentation au sujet: "Optimisation des requêtes"— Transcription de 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


Télécharger ppt "Optimisation des requêtes"

Présentations similaires


Annonces Google