0% ont trouvé ce document utile (0 vote)
76 vues10 pages

Optimisation des Requêtes en Bases de Données

Transféré par

Adama TOGOLA
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
76 vues10 pages

Optimisation des Requêtes en Bases de Données

Transféré par

Adama TOGOLA
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Méthodes d’optimisation des requêtes

Cours
“Bases de données” 1. Introduction

Optimisation 2. Étude des coûts


3. Optimisation
3.1. Utilisation d’heuristiques
3° année (MISI)
3.2. Évaluation systématique
Antoine Cornuéjols 3.3. Optimisation dans Oracle
www.lri.fr/~antoine
[email protected]

Traitement et optimisation des requêtes Traitement et optimisation des requêtes


Étapes de traitement des requêtes Introduction
Requête en langage de haut niveau

IDENTIFICATION,
ANALYSE Scanneur Parseur Validation Langage de requête de bas niveau
ET VALIDATION

Le programmeur a la charge complète de l’optimisation des requêtes


Forme intermédiaire de la requête Arbre de requête

}
OPTIMISEUR
DE REQUÊTE
Langage de requête de haut niveau
Plan d'exécution
Optimisation Possède des systèmes dédiés à l’optimisation des requêtes
GÉNÉRATEUR DU
CODE DE LA REQUÊTE
Le programmeur peut souvent donner des “indications” (“hints”)

}
Code d'exécution de la requête

PROCESSEUR D'EXÉCUTION
Exécution
DE LA BASE DE DONNÉES

Résultat de la requête
3 4
Traitement et optimisation des requêtes Traitement et optimisation des requêtes
Introduction Introduction

Deux grandes techniques d’optimisation


Recherche du meilleur plan d’exécution
Utilisation de règles heuristiques
Coût excessif
Ré-ordonnent les opérations dans les arbres de requêtes

Recherche d’une solution approchée à un coût raisonnable


Évaluation systématique des coûts
Par heuristiques
Choix du plan d’exécution le moins coûteux
Par estimation approximative des coûts

Un optimiseur de requête combine généralement ces deux techniques


Un optimiseur de requête combine généralement ces deux techniques

5 6

Traitement et optimisation des requêtes


Méthodes d’optimisation des requêtes Analyse des coûts
Opérations de tri
Algorithme le plus utilisé : le tri-fusion
1. Phase de tri de petits sous-fichiers
1. Introduction
2. Fusion triée des sous-fichiers triés
2. Étude des coûts
Phase de tri
3. Optimisation Ex : Fichier de b=1024 blocs ; espace tampon de nB=5 blocs
3.1. Utilisation d’heuristiques -> nR=205 runs initiaux (205 sous-fichiers triés)

3.2. Évaluation systématique Phase de fusion


Ex : 4 sous-fichiers triés -> 52 = 205/4 , puis 13 , puis 4 , puis 1
3.3. Optimisation dans Oracle
Coût total : (2 . b) + (2 . (b . (logdM nR)))

Nb d’accès de blocs (lect. et écriture) Nb d’accès de blocs pour la phase de fusion


8
Traitement et optimisation des requêtes Traitement et optimisation des requêtes
Analyse des coûts : tri-fusion Analyse des coûts : tri-fusion

• Étape tri 3 4 15 9 12 18 2 5 16 6 7 14
– nombre de groupes = ! BT /M" = ! 12 /3" = 4 Passe de
– Coût = 2 * ( ! BT /M" * TempsPosDébut + BT * TempsTrans) = 104 fusion #1
ms produit 4/2 = 2
Positionnement Positionnement Positionnement Positionnement groupes
3 4 9 12 15 18 2 5 6 7 14 16
Lecture Lecture Lecture Lecture
Passe de
fusion #2
produit 2/2 =1
15 4 3 9 18 12 16 2 5 7 14 6
Création groupe
de 12/3 = 2 3 4 5 6 7 9 12 14 15 16 18
Positionnement Positionnement Positionnement Positionnement 4 groupes

Ecriture Ecriture Ecriture Ecriture

Coût des passes de fusion


3 4 15 9 12 18 2 5 16 6 7 14
= BT*(2*log M-1 (BT /M)-1) * TempsESBloc
= 12*(2*log 2 (12 /3)-1) *11ms = 396 ms

Traitement et optimisation des requêtes Traitement et optimisation des requêtes


Analyse des coûts : tri-fusion Analyse des coûts : tri-fusion

Estimation du coût
d’un tri-fusion
(FBM = 20)
TempsES (TRI) =
2*(BT /M* TempsPosDébut + BT*TempsTrans) + BT*(2*log M-1 (BT /M)-1) * TempsESBloc

= 104 ms + 396 ms = 500 ms

N = nb d’enregistrements
M = Taille de la mémoire centrale
disponible en nombre de blocs
Traitement et optimisation des requêtes Traitement et optimisation des requêtes
Analyse des coûts Analyse des coûts
Opérations de SELECTION Opérations de JOINTURE
Responsabilité du scanneur de fichiers Opération très coûteuse
Scrute les enregistrements d’un fichier pour extraire ceux qui satisfont à une
condition de sélection
Plusieurs méthodes de jointure
Plusieurs méthodes de recherche Utilisation de boucles imbriquées (force brute)
Test d’égalité : Une seule boucle si index ou clé de hachage sur l’autre attribut
Si index : parcours d’index Par tri-fusion préalable sur les deux attributs
Recherche linéaire (force brute) Par jointure-hachage et variantes
Recherche binaire si attribut clé sur lequel le fichier est trié
Utilisation d’un index primaire ou d’une clé de hachage
Utilisation d’un index secondaire (arbre-B+) Grande influence de l’espace tampon disponible
...
Sélections complexes (conjonction, disjonction, ...)

Traitement et optimisation des requêtes Traitement et optimisation des requêtes


Analyse des coûts Analyse des coûts
Opérations de PROJECTION et opérations sur les ensembles Traitement par flot ou par pipe-line

Projection Il faut éviter les lourds stockages intermédiaires


Simple si la liste des attributs de projection inclut une clé.
Sinon, problème des doublons
Traitement par flot
On utilise le résultat partiel d’une opération immédiatement dans les
Produit cartésien
opérations qui suivent
Potentiellement très coûteux. À éviter.

Union / Intersection / Différence


Même ensemble d’attributs sur chaque table
Souvent des techniques par tri-fusion
Traitement et optimisation des requêtes
Méthodes d’optimisation des requêtes Utilisation d’heuristiques

Arbre de requête (“query tree”)

structure de données arborescente


1. Introduction visualise graphiquement une requête relationnelle traduite en une
expression équivalente de l’algèbre relationnelle
2. Étude des coûts
Feuilles : tables utilisées dans la requête
3. Optimisation
Noeuds intermédiaires : opérations algébriques
3.1. Utilisation d’heuristiques
Noeud racine : dernière opération algébrique avant le retour du résultat
3.2. Évaluation systématique
3.3. Optimisation dans Oracle L’opération d’un noeud intermédiaire est déclenchée quand ses opérandes
sont disponibles.
On remplace alors le noeud par la relation produite par l’opération.

Traitement et optimisation des requêtes Traitement et optimisation des requêtes


Utilisation d’heuristiques Utilisation d’heuristiques

Arbre de requête Arbre de requête


πNO P, NUMS, NOMS, ADRESSE, DNAISS (((σEMPL P=’MEYZIEU’ (P ROJET )) #$NUMS=NoS (SERV ICE)
#$NoSSDIR=NoSS (EM P LOY E)) Première étape du processus de traduction et d’exécution
Vérification de l’existence des tables
πNO P, P.NUMS, E.NOMS, E.ADRESSE, E.DNAISS Vérification de l’existence des attributs
Vérification des droits d’accès de l’utilisateur
!"S.NoSSDIR=E.NoSS

!"P.NUMS=S.NoS EMPLOYE

On va ensuite optimiser l’arbre de requête


σP.EMPL P=’MEYZIEU’ SERVICE

PROJET
Traitement et optimisation des requêtes Traitement et optimisation des requêtes
Utilisation d’heuristiques Plans d’exécution équivalents

Optimisation de l’arbre de requête Plusieurs arbres algébriques équivalents

Recherche d’expressions algébriques équivalentes


" titre, descripteur " titre, descripteur
Optimisation par :
Utilisation de la commutativité de certains opérateurs ! ISBN = 1-111-1111-1
Conservation des seuls attributs nécessaires aux opérations ultérieures
! ISBN = 1-111-1111-1 Catégorie

Utilisation d’un ensemble de règles de transformation par l’optimiseur Livre Catégorie Livre

Traitement et optimisation des requêtes Traitement et optimisation des requêtes


Plans d’exécution équivalents Plans d’exécution équivalents

Règles d’équivalence de l’algèbre relationnelle Règles d’équivalence de l’algèbre relationnelle (suite)

! Eclatement d'une sélection conjonctive (SE) ! Commutativité restreinte de la sélection et de la jointure (CSJ)
– ! e1 ET e2 (T) = ! e1 (! e2 (T)) – ! e (T1 " T2) = ! e (T1) " T2
! Commutativité de la sélection (SC) ! si l'expression de sélection e ne contient que des colonnes de T1
– ! e1 (! e2 (T)) = ! e2 (! e1 (T)) ! Commutativité restreinte de la projection et de la sélection (CPS)
! Elimination des projections en cascades (PE) – # listeColonnes (! e (T)) = # listeColonnes (! e (# listeColonnes $ colonnes de e T))
– " liste1 (" liste2 (T)) = " liste1 (T) ! Commutativité restreinte de la projection et de la jointure (CPJ)
! Commutativité de la jointure (JC) – # listeColonnes (T1 " T2) =
– T1 # T2 = T2 # T1
– # listeColonnes (# listeColonnes % colonnes de T1(T1) " # listeColonnes % colonnes de T2(T2))
! Associativité de la jointure (JA)
! etc.
– T1 # (T2 # T3) = (T1 # T2) # T3
Traitement et optimisation des requêtes Traitement et optimisation des requêtes
Plans d’exécution équivalents Utilisation d’heuristiques

Pour chaque opération logique : plusieurs choix d’opérations physiques Optimisation de l’arbre de requête
En règle générale :
placer les opérateurs de projection et de sélection le plus près possible des
“feuilles”

" titre, descripteur (Balayage) " titre, descripteur (Balayage) " titre, descripteur (Balayage) Fusionner plusieurs sélections sur une même table en une seule afin
que le prédicat de sélection ne soit testé qu’une seule fois
! ISBN = 1-111-1111-1 (Balayage) ! ISBN = 1-111-1111-1 (Balayage) ! ISBN = 1-111-1111-1 (Balayage) Effectuer les sélections le plus tôt possible afin de réduire la taille des
(Jointure par (Jointure par (Jointure par tables intermédiaires (le plus près des feuilles)
tri-fusion) BIM) hachage)
Effectuer les projections le plus tôt possible, mais jamais avant les
Livre Catégorie Livre Catégorie Livre Catégorie
sélections (réduisent le nombre de colonnes et, souvent, le nombre de
tuples)
Placer les opérateurs de jointure le plus près possible du noeud racine
à cause du coût de leur évaluation (il devrait y avoir moins de tuples et de
colonnes près de la racine).

Traitement et optimisation des requêtes


Méthodes d’optimisation des requêtes Optimisation par évaluation des coûts

Complète l’utilisation d’heuristiques

Il faut évaluer le plus précisément des stratégies alternatives


1. Introduction tout en limitant le coût de l’optimisation elle-même.
2. Étude des coûts Surtout utilisée dans les requêtes compilées
3. Optimisation
Une évaluation des coûts est conservée dans le catalogue du SGBD
3.1. Utilisation d’heuristiques
Coût d’accès à un type de stockage secondaire (souvent le plus important)
3.2. Évaluation systématique Coût de calcul
3.3. Optimisation dans Oracle Coût d’usage de la mémoire
Coût des communications
Traitement et optimisation des requêtes Traitement et optimisation des requêtes
Optimisation par évaluation des coûts Optimisation par évaluation des coûts

Une évaluation des coûts est conservée dans le catalogue du SGBD Une évaluation des coûts est conservée dans le catalogue du SGBD

Exemple d’informations stockées :


Nombre d’enregistrements (tuples) d’un fichier Certaines valeurs ont besoin d’être remises à jour fréquemment :
Taille moyenne des enregistrements E.g. nombre d’enregistrements d’un fichier
Nombre de blocs d’autres, non
Facteur de blocage du fichier (nb max d’enregistrements par bloc) E.g. nombre de niveaux d’un index hiérarchique
Méthode d’accès primaire
Attributs d’accès primaire de chaque fichier
Informations sur tous les index secondaires et attributs d’indexation
Nombre de blocs de l’index de plus haut niveau
...

Traitement et optimisation des requêtes Traitement et optimisation des requêtes


Optimisation par évaluation des coûts Optimisation par évaluation des coûts

Exemple d’utilisation des fonctions de coût Exemple 2 d’utilisation des fonctions de coût

" titre, descripteur TempsES


(Balayage
= 11 ms)
! titre, descripteur (Balayage
TempsES = 11 ms)

(Ecriture du résultat
TempsES = 11 ms)
(Ecriture du résultat
TempsES = 11 ms) TempsES(Plan avec pipeline) = (Boucle imbriquée par

! ISBN = 1-111-1111-1TempsES(Balayage
= 92 314 ms) Coût total =
TempsES (JTFLivre! Catégorie) = 2 index secondaire sur
code de la table
interne Catégorie Coût total =
3 812 040 ms
873 540 ms TempsES = 44ms) 132ms

Catégorie
TempsES(Plan avec pipeline) =
(Ecriture du résultat
TempsES = 846 164 ms)
(Ecriture du résultat
TempsES = 11ms)
TempsES(S=IS pour index sur ISBN) +
(Jointure par tri-fusion
TempsES = 2 873 540 ms) N ! ISBN=1-11-111-1111 (Livre) * TempsES(S=IS sur code de
" ISBN = 1-111-1111-1 (Sélection par index
secondaire sur ISBN Catégorie)
TempsES = 55ms)
Livre Catégorie Livre = 55 ms + 33 ms = 88 ms
Traitement et optimisation des requêtes Traitement et optimisation des requêtes
Optimisation par évaluation des coûts Optimisation par évaluation des coûts

Estimation de la taille du résultat d’une opération Exemple d’estimation de la taille d’une projection

SELECT DISTINCT code, annéeParution FROM Livre ;


! Taille d'une sélection
– ! SelT (Expression de sélection)/ FBMT" blocs NLivre 1 000 000
! Taille d'une projection FBMLivre 20
CardLivre (code) 4 000
– N# liste(T) = NT si contient une clé candidate
CardLivre (annéeParution) 50
– N# C(T) = CardT (C) pour une colonne

– N# C1,C2,…,Cn(T) = k(1-(1- 1/k)NT) ! k = ! i=1,..,nCardT (Ci)


! k = $ i=1,..,nCardT (Ci) ! = CardLivre (code) * CardLivre (annéeParution)
! Taille d'une jointure naturelle ! = 4 000 * 50 = 200 000
– NR % S = NR * NS / maximum(CardR(cléJointure), CardS(cléJointure)) ! N" code,annéeParution(T)= k(1-(1- 1/k)N)
! = 198 652 lignes (en arrondissant)

Traitement et optimisation des requêtes


Méthodes d’optimisation des requêtes Optimisation dans Oracle

Oracle propose deux approches différentes


L’une basée sur des règles
L’autre sur les coûts
1. Introduction
Approche basée sur des règles
2. Étude des coûts Opérations classées selon une heuristique

3. Optimisation Considère 15 types d’accès différents (depuis force brute à ROWID)

3.1. Utilisation d’heuristiques Approche basée sur les coûts


Calcule le coût des stratégies en fonction des besoins en E/S, temps processeur,
3.2. Évaluation systématique
mémoire nécessaire
3.3. Optimisation dans Oracle
Possibilité d’intervention du développeur d’application
Peut fournir des “hints” (si il a des informations que n’a pas le SGBD)
Traitement et optimisation des requêtes Traitement et optimisation des requêtes
Optimisation dans Oracle Optimisation dans Oracle

Oracle : Rang Chemin d'accès


mode RULE 1 Sélection par ROWID
2 Sélection d'une ligne par jointure dans une organisation par
index groupant ou hachage hétérogène (CLUSTER) ! Cas Oracle
3 Sélection d'une ligne par hachage sur clé candidate
(PRIMARY ou UNIQUE) – outils
4 Sélection d'une ligne par clé candidate
5 Jointure par une organisation par index groupant ou !EXPLAIN PLAN
hachage hétérogène (CLUSTER)
6 Sélection par égalité sur clé de hachage (HASH CLUSTER) !SQL Trace
7 Sélection par égalité sur clé d'index groupant (CLUSTER)
8 Sélection par égalité sur clé composée !SQL Analyse (Enterprise Manager Tuning
9 Sélection par égalité sur clé simple d'index secondaire Pack)
10 Sélection par intervalle borné sur clé indexée
11 Sélection par intervalle non borné sur clé indexée !Oracle EXPERT
12 Tri-fusion
13 MAX ou MIN d'une colonne indexée
14 ORDER BY sur colonne indexée
15 Balayage

Traitement et optimisation des requêtes


Exercices

Vous aimerez peut-être aussi