0% ont trouvé ce document utile (0 vote)
46 vues36 pages

Optimisation

Transféré par

SADOK
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)
46 vues36 pages

Optimisation

Transféré par

SADOK
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

OPTIMISATION DE

REQUETES SQL
 Soit les relations
⚫ ACTEUR(numA, nom, prenom, anneeN)
⚫ FILM(numF, titre, duree, anneeS)
⚫ ROLE (numF, numA, nomRole)

 Donner le nom et le prénom des acteurs nés après 1970


(inclus) qui ont joué le rôle de François Pignon dans des
filmssortis après 1990.
 Question :
⚫ Quelle différence entre les deux requêtes suivantes ?

AUCUNE en termes de résultat retourné, mais les temps de traitements


seront différents
TRAITEMENT D’UNE REQUÊTE

BD BD’
R
A B C D E
S
A B C D E
R S
A B C D E A B C D E
tuples

tuples
Q Requête Q : Q
SELECT R.A, S.C
FROM R,S
WHERE R.B=S.B;

Exécutée Exécutée
en 5 ms en 105 ms
Une même requête peut s’exécuter
2
de différentes manières
QUESTIONS
 Comment passe-t-on d’une requête SQL (définie dans
un langage déclaratif) à un programme (impératif)
manipulant les données ?

 Comment optimise-t-on une requête afin de l’exécuter


efficacement pour trouver un résultat correct?

Analyse des différentes étapes du


traitement d’une requête
TRAITEMENT DE REQUÊTES
Validation de la syntaxe
de la requête
Requête SQL

Traduction de la requête
Analyse en arbre algébrique

Compilation
Recherche de l’arbre
Optimisation algébrique optimal

Exécution du programme
Exécution correspondant à l’arbre
algébrique optimal

Arbre algébrique  Plan d’exécution


Pour la même requête, Il peut y avoir plusieurs plans
d’exécution possibles.

L’optimiseur doit choisir le plan ayant le coût le moins important.

Ce coût est mesuré en termes de différentes ressources :


➢Accès disque,
➢Temps CPU,
➢Espace mémoire utilisé,

Dans le cas des systèmes parallèles ou distribués il doit inclure


le coût de communication.
TRAITEMENT D’UNE REQUÊTE

A,C
R(A,B,C) et S(B,C,D, E) Validation OK
SELECT R.A, S.C
SELECT R.A, S.C
Analyse FROM R, S compilation B
FROM R, S WHERE R.B=S.B;
WHERE R.B=S.B;
R S

optimisation
Election du
 A,C plan optimal
 A,C
B
B
 A,B  B,C
 A,B  B,C
R S
R S
Choix des
algorithmes
Prog. Résultats
exécution
ANALYSE

 Analyse lexicale et syntaxique :


⚫ Validation par rapport à la syntaxe SQL
⚫ Vérification des types :
 présence des attributs et relations dans le schéma
 compatibilité des types dans les prédicats

⚫ Décomposition en requêtes/sous-requêtes
COMPILATION

 Règle de passage d’une requête SQL en AR


⚫ SELECT …. : permet de définir une projection
⚫ FROM … : permet de définir les feuilles de l’arbre
⚫ WHERE ….: permet de définir
 Pour les comparaisons attribut/valeur: des sélections
 Pour les comparaisons attribut/attribut : des jointures
OPTIMISATION
 Optimiser c’est trouver le plan d’exécution d’une
requête dont le coût soit minimal (i.e. le temps de
réponse à la requête soit le plus rapide possible)

 Qu’est-ce qui peut être optimisé dynamiquement?


 Les accès disques

Il est indispensable que le temps lié à


l’optimisation soit négligeable par rapport au
temps imparti à l’exécution
ESPACE DE RECHERCHE

 Caractérisé
par les plans “équivalents”
pour une même requête
⚫ ceux qui donnent le même résultat
générés$ en appliquant des règles
detransformation
 Le coût de chaque plan est en général
différent
 L'ordre des jointures est important

Optimisation algébrique
CHOIX ALGORITHMIQUES

 Chaque opérateur peut être implémenté de


différentes façons.
⚫ La complexité de l’algorithme a un impact sur le
temps de traitement de la requête

 La façon dont les jointures sont implémentées est


important

Optimisation physique
EXÉCUTION
 Application pour chaque opération du plan
d ’exécution des programmes associés
⚫ MySQL, Postgres : C, C++
⚫ HSQL : JAVA
⚫ …
COMMENT OPTIMISER ?
 Réécriture des compositions de projections et/ou
sélections

 Réduire au plus tôt la taille et le nombre de


tuples manipulés
⚫ Tuples moins nombreux : grâce à la sélection
⚫ Tuples plus petit : grâce à la projection

 Réordonner les jointures, en fonction de la taille


des relations manipulées

 Choisir des algorithmes de jointures efficaces


selon les relations manipulées
RÉÉCRITURE DES COMPOSITIONS DE PROJECTIONS
ET/OU DE SÉLECTIONS

 Exemple :

SELECT Enom
FROM Employe E, Travaux T,
Projet P
WHERE E.Eid = T.Eid
AND T.Pid = P.Pid
AND Enom !=‘Toto’
AND Pnom = ‘Linkannot’
AND (Durée=2 OR Durée=4)
RÉÉCRITURE DES COMPOSITIONS DE PROJECTIONS
ET/OU DE SÉLECTIONS

Enom

(Durée=2  Durée=4)  (Pnom=“LinkAnnot”)  (Enom !=“toto”)

Pid

Eid

Projet Travaux Employe


OPTIMISATION ALGÉBRIQUE

 Principe:
Réduction au plus tôt du nombre et de la taille des
tuples manipulés

 Manipulation algébrique
 Exploitation des règles de transformation de certains
opérateurs
 commutativité

 associativité
RÈGLES DE TRANSFORMATION

 Commutativité des opérations binaires


⚫ RSSR
⚫ R SS R
⚫ RSSR
 Associativité des opérations binaires
⚫ ( R  S )  T  R  (S  T)
⚫ ( R S ) T  R (S T )
 Idempotence des opérations unaires
⚫ A1…An(Bm(R))   A1…An(R), Bi inclus
dans Ai
⚫ F1(F2(R))  F1  F2(R)
COMMENT PASSER DE L’UN À L’AUTRE?
Enom, Titre Enom, Titre

Budget>250

Employe
Budget>250
Travaux
Projet
Travaux Employe Projet
COMMENT PASSER DE L’UN À L’AUTRE?
Associativité de la jointure

Projet ( Travaux Employe )

Enom, Titre
( Projet Travaux ) Employe
Budget>250

Projet
Travaux Employe
COMMENT PASSER DE L’UN À L’AUTRE?
Associativité de la jointure

Projet ( Travaux Employe )

Enom, Titre
( Projet Travaux ) Employe
Budget>250

Projet Employe
Travaux Employe
Projet Travaux
COMMENT PASSER DE L’UN À L’AUTRE?
Commutativité de la
sélection et de la jointure

Budget>250 ( E (P T) )

Enom, Titre
(E Budget>250 ( P T) )
Budget>250

Projet Employe
Travaux Employe
Projet Travaux
COMMENT PASSER DE L’UN À L’AUTRE?
Commutativité de la
sélection et de la jointure

Budget>250 ( E (P T) )

Enom, Titre
(E Budget>250 ( P T) )

Budget>250 Employe

Projet Travaux
COMMENT PASSER DE L’UN À L’AUTRE?
Commutativité de la
sélection et de la jointure

(E Budget>250 ( P T) )

Enom, Titre
(E (Budget>250 (P) T) )

Budget>250 Employe

Projet Travaux
COMMENT PASSER DE L’UN À L’AUTRE?
Commutativité de la
sélection et de la jointure

(E Budget>250 ( P T) )
Enom, Titre

(E (Budget>250 (P) T) )

Employe
Budget>250
Travaux
Projet
ARBRES DE JOINTURES

 Des arbres de jointures


équivalents peuvent être obtenus P

en appliquant les règles de E T


commutativité et d'associativité

SELECT * E
FROM E, T, P
WHERE E.Eid=T.Eid P T
AND T.Pid=P.Pid

 T
P E
RAPPEL

 Exemple :
Enom
SELECT Enom
FROM Employe E, Travaux T, Durée=2  Durée=4
Projet P
WHERE E.Eid = T.Eid Pnom=“LinkAnnot”
AND T.Pid = P.Pid
AND Enom !=‘Toto’ Enom!=“toto”
AND Pnom = ‘Linkannot’
AND (Durée=2 OR Durée=4)
Pid

Eid

Projet Travaux Employe


AUTRE PLAN ÉQUIVALENTE
Enom

Pid,Enom

Pid Pid,Eid Eid,Enom

Pnom=“LinkAnnot” Durée=2  Durée=4 Enom!=“toto”

Projet Travaux Employe


ALGORITHMES DE RECHERCHE

 Limiter l'espace de recherche


⚫ heuristiques
 par ex. appliquer les opérations unaires avant les autres
⚫ limiter la forme des arbres
Arbre linéaire Arbre touffu

R4

R3

R1 R2 R1 R2 R3 R4
LES ALGORITHMES DE JOINTURES

 Les algorithmes de jointures sont couteux

 Il existe différents algorithmes d’implantation des


jointures
 Jointure par boucles imbriquées

 Jointure par tri fusion

 Jointure par hachage

 Exemple :
 On considère la jointure R⋈A S avec R(A,B) et S(A,C)
JOINTURE PAR BOUCLE IMBRIQUÉE

 Algorithme le plus simple pour évaluer la jointure


 Principe:
⚫ Comparer chaque nuplet de la relation R à tous les nuplets de
la relation S,
⚫ Concaténer les nuplets pour lesquels la condition de jointure est vérifiée
⚫ Ajouter le nouveau tuple au résultat.

JOINTURE PAR TRI-FUSION

 Algorithme utile quand il n’y a pas d’index sur des tables de


grandes tailles
 Principe:
⚫ Trier R et S par rapport à l’attribut de jointure A
⚫ Fusionner R et S
JOINTURE PAR HACHAGE

 Algorithme utile quand il y a un index sur l’attribut


de jointure et qu’une des deux relations peut être
mise en mémoire
 Principe:
On suppose que S est une relation de taille plus petite que R
⚫ Hacher S avec une fonction de hachage H (clé=A;
valeur=tuple de S)
⚫ Pour chaque tuple r de R, rechercher dans la structure de
hachage la clé r.A

60
COMMENT OPTIMISER ?

 Le processus d’optimisation s’appuie sur :


1. Le schéma logique de la base, description des tables

2. Le schéma physique de la base, indexes et chemins


d'accès, tailles des blocs
3. Des statistiques : taille des tables, des index,
distribution des valeurs
4. Des statistiques : taux de mises-à-jour

5. Des algorithmes : ils peuvent différer selon les


systèmes
ESTIMER LE COÛT D’UN PLAN
 La fonction de coût donne les temps I/O et CPU
⚫ nombre d’instructions et d’accès disques (écriture/lecture)

 Estimation du nombre d’accès disque pendant


l’évaluation de chaque nœud de l’arbre algébrique

 Estimation de la taille du résultat de chaque nœud par


rapport à ses entrées :
⚫ sélectivité des opérations
CONCLUSION

Maintenant vous savez se passe après un clic


sur le bouton ‘Execute’

Vous aimerez peut-être aussi