5.chapitre 2 - Optimisation
5.chapitre 2 - Optimisation
Houari Boumediene
USTHB – Alger
Département d’Informatique
Responsable
Dr K. Boukhalfa
INTRODUCTION
Ce que veut dire optimisation?
Qu’est-ce qu’on optimise?
Pourquoi il y a un espoir d’optimisation des requêtes?
Quelles sont les sources du temps supplémentaire?
Et si les Tables sont volumineuses?
Et si les résultats intermédiaires sont volumineux?
SWAP
Algèbre relationnelle : modèle formel permettant d'exprimer et de calculer les requêtes sur les relations.
Constituée d'un ensemble d'opérateurs algébriques : la sélection, la jointure, la projection, les opérateurs
ensemblistes.
Le résultat de l'exécution d'un opérateur est toujours une relation, ce qui permet la composition.
Une requête algébrique peut se présenter sous forme d'un arbre algébrique.
Arbre algébrique
visualisation d'une requête sous une forme graphique d'arbre plus facile à lire qu'une forme linéaire
ARBRE ALGÉBRIQUE
L’évaluateur a besoin d’informations sur les relations ainsi que les indexes impliquées.
Les Catalogues contiennent:
pour chaque relation: # tuples (NTuples) et # pages (NPages)
pour chaque index: # valeurs de clés distinctes (NKeys) et # pages (NPages)
pour chaque index à arbre: Hauteur de l’Index (Height), plus petites / plus grande valeurs de clé (Low/High)
D’autres types d’infos détaillées ([Link]., histogrammes des valeurs dans certains
champs) sont aussi stockées.
Histogramme: structure donnant une approximation de la distribution des valeurs des données
CHEMINS D’ACCÈS ET CORRESPONDANCE D’INDEX
Utilisation du Scannage du fichier, ou d’un index qui correspond à (‘’match‘’) une sélection (WHERE) de la requête.
Un index à arbre correspond à une conjonction de termes qui mentionnent seulement des attributs
d’un préfixe de la clé de recherche.
Index b-arbre sur a correspond à la sélection a=5, ou a>5
L’index à arbre sur <a, b, c> correspond à la sélection a=5 AND b=3 et à a=5 AND b>6, mais pas à b=3.
Un index à hachage correspond à une conjonction de termes qui a un terme de la forme attribut =
valeur pour chaque attribut de la clé de recherche de l’index.
L’index à hachage sur <a, b, c> correspond à a=5 AND b=3 AND c=5; mais pas à b=3, ni à a=5 AND b=3, ni à a>5
AND b=3 AND c=5.
Index Bitmap
UN ALGORITHME D’OPTIMISATION
1. Séparer chaque sélection σF1 ∧ … ∧ Fn(E) en une cascade σF1 (σF1 … (σFn(E)))
4. Combiner des cascades de sélection et de projection dans une sélection seule, une projection
seule, ou une sélection suivie par une projection
5. Regrouper les nœuds intérieurs de l’arbre autour des opérateurs binaires (⋈, *, -, ∪). Chaque
opérateur binaire crée un groupe
6. Produire un programme comportant une étape pour chaque groupe, à évaluer dans n’importe
quel ordre mais tant qu’aucun groupe ne soit évalué avant ses groupes descendants.
17
QUELQUES PROBLÈMES
Cette optimisation ignore la taille de chaque table, les facteurs de sélectivité, etc.
Aucune estimation de résultats intermédiaires
Exemple:
18
MÉTHODES D’OPTIMISATION
BASÉES SUR LES MODÈLES DE
COÛTS
«Cost-based Methods»
19
NOTIONS UTILES
Les tables relationnelles sont stockées physiquement dans des fichiers sur disque
Lorsqu’on veut accéder aux données, on doit transférer le contenu pertinent des fichiers dans la
mémoire
Facteur de blocage = nombre de tuples d’une relation qui «tiennent» dans un bloc
Coût de lecture (ou écriture) d’une relation = nombre de blocs à lire du disque vers la mémoire
20
ESTIMATION DU COÛT DES OPÉRATIONS
PHYSIQUES
21
MODÈLE DU COÛT D'UNE ENTRÉE- SORTIE EN
MÉMOIRE SECONDAIRE
Paramètre Signification
TempsESDisque(n) Temps total de transfert (lecture ou écriture) de n octets du disque
TempsTrans(n) Temps de transfert des n octets sans repositionnement
TempsPosDébut Temps de positionnement au premier octet à transférer (ex : 10 ms)
TempsRotation Délai de rotation (ex : 4 ms)
TempsDépBras Temps de déplacement du bras (ex : 6 ms)
TauxTransVrac Taux de transfert en vrac (ex : 2MB/sec)
TempsESBloc Temps de transfert d'un bloc (ex : 11 ms)
TempsTrans Temps de transfert d'un bloc sans repositionnement (ex : 1 ms)
TailleBloc Taille d'un bloc (ex : 2K octets)
22
STATISTIQUES AU SUJET DES TABLES
Statistique Signification
||T|| Nombre de lignes de la table T
23
COÛT D’UNE REQUÊTE OP5
⫪
Soit R une requête composée de n opérations algébriques (Opi) OP4
⋈
Coût (R) = ∑ Coût (OPi) OP3
Coût (Opi) = Nombre de pages transférées de la mémoire secondaire vers la RAM ou ⋈
Entre 0 et 1
Exemple :
• Si la table Etudiant contient 100 000 étudiants, la requête Select * from Etudiant where Ville
= Alger
• Retournera 20 000 tuples
FACTEUR DE SÉLECTIVITÉ
||(σ(R))|| = SF * ||R||
SF (A = valeur) = 1 / NDIST(A)
SF(not P) = 1 - SF(P)
26
Le coût dépend de l'algorithme (index, hachage ou balayage).
FACTEUR DE SÉLECTIVITÉ
27
EXEMPLES
SELECT *
FROM R1, R2 ·
SF =1
SELECT *
FROM R1
WHERE A = valeur
· SF = 1/NDIST(A) avec un modèle uniforme
28
ALGORITHMES GÉNÉRAUX
POUR LES OPÉRATEURS
RELATIONNELS
29
LA SÉLECTION
Plan d’exécution
• Pour chaque tuple t de ouvrier faire -- accès séquentiel En cas d’absence de statistiques, les
30
Total = |Index|+FS*|T|
ALGORITHMES DE JOINTURE
T1 T2 T1⋈ T2
Jointure sans index C DE F A B C C DE F
A B C
31
JOINTURE PAR BOUCLES IMBRIQUÉES (JBI)
R ⋈F S
Principe:
32
JOINTURE PAR TRI FUSION
tables
Coût =
|T1|+|T2| si T1, T2 déjà triées
Principe
2*|T1|*logb |T1|+|T2|+|T1| Si |T2| triée
Trier les deux tables sur les colonnes de jointure 2*|T2|*logb |T2|+|T2|+|T1| Si |T1| triée
Très efficace quand une des deux tables est petite (1, 2, 3
33
Algorithme en option dans Oracle
JOINTURE PAR TRI FUSION
SI cR = cS
Produire les lignes concaténées pour chacune des combinaisons de lignes de
GR(cR) et GS(cS);
Lire les groupes suivants GR(cR) de R et GS(cS) de S;
SINON
SI cR < cS
Lire le groupe suivant GR(cR) de R
SINON
SI cR > cS
Lire le groupe GS(cS) suivant dans S
FINSI
FINSI FINSI
34
FIN TANT QUE
PRINCIPE DE LA JOINTURE PAR HACHAGE
B0 B’0
B1 B’1
T1 F(x) F(x) T2
B2 B’2
B2 B’2
35
COÛT JOINTURE PAR HACHAGE
1. Chargement de T1 : |T1|
4. Chargement de T2 : |T2|
7. Chargement du Block Bi de T1 avec B’i de T2, faire la jointure entre les deux blocs : |Bi|+|B’i|
8. Au total : ∑|Bi|+|B’i|=|T1|+|T2|
T1 a⋈b T2
Comme boucles imbriquées mais avec l’utilisation de l’index défini sur l’attribut b de T2
coût excessif
heuristiques
38
PLUSIEURS PLANS D’EXÉCUTION POUR UN
ARBRE ALGÉBRIQUE
Pour chaque opération logique
plusieurs choix d’opérations physiques
39
CHOIX DU MEILLEUR PLAN
40
DIFFÉRENTES STRATÉGIES
41
OPTIMISATION BASÉE SUR MODÈLE DE COÛT
Procédure
1. Énumérer tous les plans {P1, …, Pm} pour chaque requête (notons que chaque requête possède
un ensemble d’opérations O1, …, Ok)
42
STRUCTURES
D’OPTIMISATION
TECHNIQUES UTILISÉES
Vues matérialisées
• Une vue est une requête nommée
• Une vue matérialisée : les données résultant de sa requête sont
stockées et maintenues
Index
• Structures permettant d'associer à une clé d’un n-uplet l'adresse
relative de cet n-uplet
Traitement parallèle
Groupement
Fragmentation
44
CLASSIFICATION
TECHNIQUES D’OPTIMISATION
TRAITEMENT
FRAGMENTATION
PARALLÈLE
MONO-TABLE MULTI-TABLES
45
OPTIMISATION PAR INDEX
C’est quoi un index?
Index populaires
Index
Index simple: sur une seule table ou une seule vue
(arbre B, index binaire, index de projection)
Une table Plusieurs Tables
Star Join Index,
Index de jointure: sur plusieurs tables dans B-tree, Projection
Bitmap Join Index
un schéma en étoile
• index de jointure en étoile Plusieurs Plusieurs
1 Seul Attribut 1 Seul Attribut
attributs attributs
• Index de jointure binaire
46
TECHNIQUES D’INDEXATION
47
B-ARBRE
Profondeur
Arbre équilibré
Racine
@enfant
Ordre d : ⌈ d/2 ⌉<=Nb-Enfants<=d
Clé
Page non équilibré si NB-Enfants>d ou si NB-
Recherche (CléR)
Algorithme d’ajout
Racine
@enfant
Si recherche =vrai alors afficher « impossible, clé
51
1
INDEX BINAIRE
V1 C1 A1 C1 1 Poitiers
V2 C2 A2
V3 C3 A1 C2 2 Nantes
V4 C1 A1
C3 3 Poitiers
C4 4 Paris
Table Ventes
Table Article
IdLigne noClient noArticle DateVente Montant
IdLigne noArticle catégorie
V1 1 10 10/01/2008 100
A1 10 Beauté
V2 2 20 10/01/2008 200
A2 20 Beauté
V3 3 10 10/01/2008 500
A3 40 Beauté
V4 1 10 20/01/2008 150
A4 50 Jouet
…
53
A5 60 Jouet
INDEX DE JOINTURE BITMAP : EXEMPLE
Client
RIDC CID Nom Ville
Ventes IJB Ville IJB Cat SELECT count(*)
6 616 Yacine Alger RID CID PID TID Montant RID A B T RID B M Jo Jr F
FROM Ventes V, Client C
V V V
A B RIDV And
5 515 Karim Blida 61 1 1 0 0 1 1 0 0 0 0 1 1 1 1
4 414 Lyes Tipaza
1
6
106 11 25
2 1 0 0 2 1 0 0 0 0 1 1 2 1
WHERE [Link] = [Link]
3
2
313
212
Karima
Katia
Tipaza
Alger
2
61
6
106 66 28 3 1 0 0 3 0 1 0 0 0 1 0 3 0 AND [Link] = ‘Alger’
4 0 1 0 4 0 1 0 0 0 0 0 4 0
1 111 Rabah Alger 61
3 104 33 50 5 0 0 1 5 1 0 0 0 0 0 1 5 0
6
6 1 0 0 6 1 0 0 0 0 1 1 6 1
51
4
5
104 11 10 7 1 0 0 7 0 0 0 0 1 1 0 7 0 CREATE BITMAP INDEX
Produit 8 1 0 0 8 0 0 0 0 1
RIDP PID Nom Catégorie
5
41
4
105 66 14
9 1 0 0 9 0 0 0 0 1
1 0 8 0
Ventes_Pictaviens_bjix ON
1 0 9 0
6 106 Sonoflore Beauté 6
21
106 55 14
10 0 0 1 10 0 0 0 1 0 0 0 10 0 Ventes([Link]) FROM Ventes,
2
5 105 Clarins Beauté
11
11
12
0
0
0
0
1
1
11
12
0
0
0
0
0
0
1
1
0
0
0 0 11 0 Client WHERE [Link] =
4 104 WebCam Multimédia 7 101 44 20 0 0 12 0
3 103 Barbie Jouet
1
13 0 1 0 13 0 0 0 1 0 0 0 13 0 [Link]
11
8 101 33 27 14 0 1 0 14 0 0 1 0 0 0 0 14 0
2 102 Manure Jardinage 1
1 101 SlimForm Fitness 15 1 0 0 15 0 0 1 0 0 1 0 15 0
21
9 101 11 100 16 1 0 0 16 1 0 0 0 0
2 1 1 16 1
10
31
3
102 11 200
17
18
1
0
0
1
0
0
17
18
0
0
1
1
0
0
0
0
0
0
1
0
0
0
17
18
0
0
Deux opérations :
Temps 11
41
4
102 11 102 19
20
1
1
0
0
0
0
19
20
0
0
1
1
0
0
0
0
0
0
1
1
0
0
19 0 1. Lire dans le bitmap la
20 0
colonne P
RID T
TID Mois Année
41 21 1 0 0 21 1 0 0 0 0
12 102 55 103 1 1 21 1
6 11 Janvier 2019 4
22 1 0 0 22 1 0 0 0 0 1 1 22 1
5
4
22
33
Février
Mars
2019
2019
13
51
5
102 66 100 23
24
1
1
0
0
0
0
23
24
1
1
0
0
0
0
0
0
0
0
1 1 23 1 2. Compter le nombre de 1.
1 1 24 1
3
2
44
55
Avril
Mai
2019
2019
14
51
5
103 55 17
25 0 0 1 25 1 0 0 0 0 0 1 25 0 Pas de lecture dans la table
21 26 0 0 1 26 1 0 0 0 0
Ventes
15 103 44 45 0 1 26 0
1 66 Juin 2019 2 27 0 0 1 27 1 0 0 0 0 0 1 27 0
11
16 105 66 44
1
21
SELECT count(*)
17
2
104 66 40
FROM Ventes V,
18 Client
51
104C,22Produit
20 P ?
54
5
WHERE [Link] =[Link]
61 AND [Link]=[Link] and [Link] = ‘Alger’ and [Link]=‘Beauté’
104 22 20
6
CARACTÉRISTIQUES DES BITMAPS
55
EXEMPLE 1 : SANS INDEX
58
EXEMPLE 1 : AVEC INDEX
59
EXEMPLE 2 : SANS INDEX
60
EXEMPLE 2 : SANS INDEX
61
VUES MATÉRIALISÉES
Exigence de ressources:
• Espace disque
• Coût de maintenance (rafraîchissement des données)
• Coût de calcul
- Fonction « objectif »:
Optimiser le coût d’exécution des requêtes ou Optimiser le coût de
maintenance
62
EXEMPLE
63
64
65
VUES MATÉRIALISÉES CANDIDATES
R5
R1 R6
R2
Construire l’arbre algébrique de chaque requête
R4
intéressantes
requêtes
Problème NP-Complet
66
MAINTENANCE DES VUES MATÉRIALISÉES
67
RÉÉCRITURE DES REQUÊTES
Processus de réécriture
Après le processus de sélection des vues, toutes les requêtes définies sur la BD doivent
être réécrites en fonction des vues
Sélectionner la meilleure réécriture pour une requête est une tâche difficile.
68
Fragmentation de Données
(Partitionnement)
69
LA FRAGMENTATION DE DONNÉES
Définition
Fragmentation horizontale
Fragmentation verticale
Fragmentation mixte
70
TYPES DE FRAGMENTATION
Fragmentation horizontale
• Décomposer les objets en un ensemble de lignes (instances)
A1 A2 A3 A4 A5
Attributs
I2
A1 A2 A3 A4 A5
I4
I1 I8
I2
A1 A2 A3 A4 A5
I3
I1
I4
Instances
I5
I5
I6
I6
I7 A1 A2 A3 A4 A5
I8
I3
I9 I9
I10
A1 A2 A3 A4 A5
I7
I10
71
TYPES DE FRAGMENTATION
Fragmentation verticale
Décomposer les objets en un ensemble de colonnes (attributs).
A1 A2 A3 A4 A5
I1
I2
I3
I4
I5
I6
I7
I8
I9
I10
A1 A4
I1 A1 A2 A1 A3 A5
I2 I1 I1
I3 I2 I2
I4 I3 I3
I5 I4 I4
I6 I5
I5
I7 I6
I6
I8 I7
I7
I9 I8
I8
I10 I9
I9
I10
I10
72
TYPES DE FRAGMENTATION
Fragmentation mixte
Horizontale suivie d’une verticale.
A1 A2 A3 A4 A5
A1 A2 A3 A4 A5
I1 I1
I5
I2
I6
I3 A1 A2 A3 A4 A5
I4 I2
I4
I5 I8
I6 A1 A2 A3 A4 A5
I7 I3
I9
I8
A1 A2 A3 A4 A5
I9
I7
I10
I10
A1 A4 A1 A2 A1 A3 A5
I1 I1 I1
I5 I5 I5
I6 I6 I6
A1 A4 A1 A2 A1 A3 A5
I2 I2
I2
I4 I4
I4
I8
I8
I8
A1 A2
A1 A4
A1 A3 A5
I3
I3
I3
I9
I9
I9
A1 A2
A1 A4
I7 A1 A3 A5
I7
I10 I7
I10
I10
73
TYPES DE FRAGMENTATION
A1 A2 A3 A4 A5
I1
I2
Fragmentation mixte
Verticale suivie d’une horizontale
I3
I4
I5
I8
I9
I10
A1 A4 A1 A2 A1 A3 A5
I2 I2 I2
I4 I4 I4
A1 A4 A1 A2 A1 A3 A5
I8 I8 I8
I1 I1 I1
I2 I2 I2
A1 A4 A1 A2 A1 A3 A5
I3 I3 I3
I3 I3 I3
I4 I4 I4 I9 I9 I9
I5 I5 I5
A1 A4 A1 A2 A1 A3 A5
I6 I6 I6 I7 I7 I7
I8 I8 I8 A1 A4 A1 A2 A1 A3 A5
I1 I1 I1
I9 I9 I9
I5 I5 I5
I10 I10 I10
I6 I6 I6
74
FRAGMENTATION HORIZONTALE PRIMAIRE ET DÉRIVÉE (I)
Client
Client1 1
Select
SelectNom,
Nom,Age
Age Client
Client Select
SelectNom,
Nom,Age
Age
From Algérois
FromClient
Client Algérois
From
Client FromClient2
Client2
Where
WhereVille=Béchar
Ville=Béchar Client2 2
Béchariens
Béchariens
75
FRAGMENTATION HORIZONTALE PRIMAIRE ET DÉRIVÉE (II)
Ventes
Ventes1 1 Ventes
Ventes2 2
Ventes
Select
Selectsum(Montant)
sum(Montant)
Ventes
From
FromClient
ClientC,C,Ventes
VentesVV Select
Selectsum(Montant)
sum(Montant)
Where
[Link]=[Link]
[Link]=[Link] From
and FromVentes2
Ventes2
Ville=Béchar Client
Client1 1 Client
Ville=Béchar Client
Client Client2 2
Béchariens
Béchariens
Algérois
Algérois
76
INTÉRÊT DE LA FRAGMENTATION HORIZONTALE(I)
Améliorer la performance
1. Partition Elimination (Pruning)
• Elimination des partitions non pertinentes
• Possibilité d’exécution parallèle des sous requêtes
Select
From
Where
Serveur
Requête
Fragment
Pertinent
Utilisateur Résultat local
Fragment non
Pertinent
Serveur
Table
Fragment
Pertinent
Résultat local
Résultat
Fragment non
Pertinent
77
INTÉRÊT DE LA FRAGMENTATION HORIZONTALE(II)
Amélioration de la performance
2. Partition Wise Joins
Elimination des jointures non pertinentes
Possibilité d’exécution parallèle des sous-jointures
Serveur
Select
From
Where
Utilisateur Requête
Table2
Table1
Serveur
Résultat
78
INTÉRÊT DE LA FRAGMENTATION HORIZONTALE(III)
Améliorer la manageabilité
Fragmentation horizontale préserve le schéma logique
Toutes les opérations se font au niveau partition
Possibilité de manipulation individuelle ou collective des partitions
79
TRUNCATE PARTITION Vider une partition sans la supprimer
EXEMPLE D’AJOUT DE DONNÉES
Alimentation hebdomadaire d’une table
L’administrateur partitionne sa table par semaine
L’alimentation de l’entrepôt consiste alors à ajouter une partition à la table
Aucune autre partition ne sera touchée.
Semaine 1 Semaine 3
Semaine 5
Semaine 2 Semaine 4
80
INTÉRÊT DE LA FRAGMENTATION HORIZONTALE(IV)
81
AMÉLIORER LA MAINTENANCE ET LA DISPONIBILITÉ
Crash
Partition1 Partition 3
Partition5
Partition2 Partition4
Partition6
82
FRAGMENTATION HORIZONTALE ET INDEX
Un index peut être défini sur une table fragmentée ou non
Un index défini sur une table fragmentée peut être fragmenté ou non.
Index global
83
FRAGMENTATION ET INDEX
Table non Table non
Index fragmentée
Index fragmentée
Table fragmentée
84
MODES DE FRAGMENTATION
Mode de fragmentation
2
Mode simple Mode composite
85
FRAGMENTATION PAR INTERVALLE « RANGE »
Client 1
Age Age<18
Client 2
0 18 60 120
18Age<60
Domaine(Age) Client 3
Client Age60
86
FRAGMENTATION PAR LISTE « LIST »
Client 1
Ville Ville=‘Béchar’
Client 2
Poitiers Paris, Nantes Autres
Ville=‘Alger’ ou
Ville=‘Ouargla’
Domaine(Ville) Client 3
87
FRAGMENTATION PAR HACHAGE « HASH »
Client 1
CID F(CID)=x
Client 2
F(CID) F(CID)=y
Fonction de Client 3
Client hachage
F(CID)=z
88
MODES DE FRAGMENTATION COMPOSITE
Client 11
Client 1 Age<18 ET Genre=‘M’
List
(Genre) Client 12
Age<18 ET Genre=‘F’
Age<18
Age Genre
Client 21
Client 2
18Age<60 ET Genre=‘M’
List Client 22
Range (Genre)
(Age) 18Age<60 ET Genre=‘F’
18Age<60
Client 31
Client Age60 ET Genre=‘M’
Client 3
List Client 32
(Genre)
Age60 ET Genre=‘F’
Age60
89
MODES DE FRAGMENTATION COMPOSITE
90
FRAGMENTATION DÉRIVÉE PAR LE MODE RÉFÉRENCE
Fragmenter une table selon le schéma de fragmentation d’une autre table en utilisant le lien par clé
étrangère.
91