Vous êtes sur la page 1sur 32

Bases de donnes avances

valuation et optimisation des requtes


Dan VODISLAV

Universit de Cergy-Pontoise
Master Informatique M1
Cours BDA

Plan
Traitement d'une requte
tapes
Dcomposition
Traduction algbrique et plan d'excution

Optimisation des requtes

Principes
Rgles de rcriture
Chemins d'accs
Algorithmes de jointure: boucles imbriques, tri fusion, hachage, index
Algbre physique

valuation des requtes


Optimisation dans Oracle
Cours BDA (UCP/M1): Optimisation

Traitement d'une requte


Requtes exprimes en SQL: langage dclaratif
On indique ce que l'on veut obtenir
On ne dit pas comment l'obtenir

Le SGBD doit faire le reste


Dterminer la faon d'excuter la requte: plan d'excution
Plusieurs plans possibles  choisir le meilleur : optimisation
Excuter le plan choisi: valuation

Plan d'excution
Exprim en algbre relationnelle (expression algbrique)
Forme excutable: on sait prcisment comment l'valuer

Cours BDA (UCP/M1): Optimisation

tapes
Dcomposition: requte SQL  expr. algbre relationnelle
Optimisation: expr. algbre relationnelle  plan d'excution
valuation (traitement): plan d'excution  rsultats
Requte SQL
DECOMPOSITION
Analyse/Simplification
Traduction algbrique
Expression de lAlgbre Rel.

Plan dExcution

OPTIMISATION
Choix des algorithmes
Evaluation des cots
TRAITEMENT
Accs aux fichiers

Cours BDA (UCP/M1): Optimisation

COUCHE LOGIQUE

COUCHE PHYSIQUE

Dcomposition
Sous-tapes

Analyse syntaxique
Analyse smantique
Simplification
Normalisation
Traduction algbrique

Analyse syntaxique
Requte = chane de caractres
Contrle de la structure grammaticale (respect de la syntaxe SQL)
Vrification de l'existence des relations/attributs adresss dans la requte
Utilisation du dictionnaire de donnes de la base

Transformation en une reprsentation interne: arbre/graphe syntaxique

Cours BDA (UCP/M1): Optimisation

Dcomposition (suite)
Analyse smantique
Vrification des oprations raliss sur les attributs
Ex. Pas d'addition sur un attribut texte

Dtection d'incohrences
Ex. prix=5 and prix=6

Simplification
Conditions inutilement complexes
Ex. (A or not B) and B est quivalent A and B

Normalisation: simplifie la traduction algbrique


Transformation des conditions en forme normale conjonctive
Dcomposition en blocs Select-From-Where

Cours BDA (UCP/M1): Optimisation

Traduction algbrique
Dterminer l'expression algbrique quivalente la requte SQL
Clause SELECT  oprateur de projection
Clause FROM  les relations qui apparaissent dans l'expression
Clause WHERE
Condition "Attr = constante"  oprateur de slection
Condition "Attr1 = Attr2"  jointure ou slection

Rsultat: expression algbrique


Reprsente par un arbre de requte

Cours BDA (UCP/M1): Optimisation

Exemple de traduction algbrique


Soit le schma relationnel (simplifi)
Cinma (ID-cinma, nom, adresse)
Salle (ID-salle, ID-cinma, capacit)
Sance (ID-salle, heure-dbut, film)

Requte: quels films commencent au Multiplex 20 heures?


SELECT Sance.film
FROM Cinma, Salle, Sance
WHERE Cinma.nom = 'Multiplex' AND
Sance.heure-dbut = 20 AND
Cinma.ID-cinma = Salle.ID-cinma AND
Salle.ID-salle = Sance.ID-salle

Expression algbrique
nom = 'Multiplex' heure-dbut = 20 ((Cinma  Salle)  Sance)
film (
Cours BDA (UCP/M1): Optimisation

Exemple (suite)
Arbre de requte
nom = 'Multiplex' heure-dbut = 20 ((Cinma  Salle)  Sance)
film (

film
nom = 'Multiplex' heure-dbut = 20

Cinma

Salle

Sance

Cours BDA (UCP/M1): Optimisation

Optimisation
Pour une requte SQL, il y a plusieurs expressions algbriques
quivalentes possibles
Le rle de principe de l'optimiseur:
Trouver les expressions quivalentes une requte
valuer leurs cots et choisir "la meilleure"

On passe d'une expression une autre quivalente en utilisant


des rgles de rcriture

Cours BDA (UCP/M1): Optimisation

10

Rgles de rcriture
De nombreuses rgles existent
Exemples
Commutativit des jointures
R  S S  R

Associativit des jointures


(R  S)  T R  (S  T )

Regroupement des slections


A='a' B='b' (R) A='a' ( B='b' (R))

Commutativit de la slection et de la projection


A1,, An ( Ai='a' (R)) Ai='a' (
A1,, An (R)) , i {1, , n}

Cours BDA (UCP/M1): Optimisation

11

Rgles de rcriture (suite)


Exemples (suite)
Commutativit de la slection et de la jointure
A='a' (R(, A, )  S ) A='a' (R)  S

Distributivit de la slection sur l'union (pareil pour la diffrence)


A='a' (R S ) A='a' (R) A='a' (S)

Commutativit de la projection et de la jointure


A1,, An, B1, , Bm, (R Ai = Bj S ) A1,, An(R) Ai = Bj B1, , Bm(S)

Distributivit de la projection sur l'union (pareil pour la diffrence)


A1,, An (R S ) A1,, An (R) A1,, An (S)

Cours BDA (UCP/M1): Optimisation

12

Restructuration (rcriture) algbrique


Transformation de l'expression algbrique pour en obtenir une
autre "meilleure" quivalente
Utilisation des rgles de rcriture

Exemple d'algorithme de restructuration


1. Sparer les slections plusieurs prdicats en plusieurs slections un
prdicat (regroupement des slections)
2. Descendre les slections le plus bas possible dans l'arbre (rgles de
commutativit et distributivit de la slection)
3. Regrouper les slections sur une mme relation (regroupement des
slections)
4. Descendre les projections le plus bas possible dans l'arbre (rgles de
commutativit et distributivit de la projection)
5. Regrouper les projections sur une mme relation

Cours BDA (UCP/M1): Optimisation

13

Justification de l'algorithme
Ide de base: rduire la taille des donnes traites le plus tt
possible
On ralise d'abord les slections, car c'est l'oprateur le plus "rducteur"
On ralise ds que possible des projections pour liminer les attributs
inutiles
On ralise les jointures (opration trs coteuse) une fois que la taille des
donnes a t rduite au maximum

Question: le plan ainsi obtenu est-il toujours optimal?


Rponse: NON, d'autres facteurs peuvent intervenir

Cours BDA (UCP/M1): Optimisation

14

Rsultat aprs la restructuration

film

film

nom = 'Multiplex' heure-dbut = 20


ID-salle
ID-salle, film
heure-dbut = 20

ID-cinma

Cinma

Salle

Sance

nom = 'Multiplex'ID-salle, ID-cinma


Cinma

Salle

Sance

Cours BDA (UCP/M1): Optimisation

15

Exemple d'optimisation qui choue


On rajoute une table Film, en plus de Cinma, Salle, Sance
Film (film, ralisateur, anne)

Requte: les ralisateurs des films qu'on peut voir entre 14h-22h
SELECT Film.ralisateur
FROM Film, Sance
WHERE Sance.heure-dbut > 14 AND Sance.heure-dbut < 22 AND
Film.film = Sance.film

Expressions algbrique
heure-dbut > 14 heure-dbut < 22 (Film  Sance))
Initiale: ralisateur (
Optimise: ralisateur (Film  heure-dbut > 14 heure-dbut < 22 (Sance))

Hypothses
Film occupe 8 pages et ne contient que pour 20% des films de Sance
Sance occupe 50 pages et 90% des sances sont entre 14h et 22h
Cours BDA (UCP/M1): Optimisation

16

Exemple (suite)
Plan initial: ralisateur (
heure-dbut > 14 heure-dbut < 22 (Film  Sance))
Jointure: on lit 8 * 50 = 400 pages et on produit 20% * 50 = 10 pages
Slection: on produit 90% * 10 = 9 pages de sances entre 14h-22h
On laisse de ct la projection (mme cot dans les deux cas)
Cot (E/S): 400E + 10S + 10E + 9S = 429 E/S

Plan optimis: ralisateur (Film  heure-dbut > 14 heure-dbut < 22 (Sance))


Slection: on lit 50 pages et on produit 90% * 50 = 45 pages de sances
Jointure: on lit 8 * 45 = 360 pages et on produit 20% * 45 = 9 pages
Cot (E/S): 50E + 45S + 360E + 9S = 464 E/S

 Le plan initial est ici meilleur que celui optimis!


Cas rare: ici la jointure est plus slective que la slection

Cours BDA (UCP/M1): Optimisation

17

Conclusions rcriture algbrique


La rcriture algbrique est ncessaire, mais pas suffisante
Il faut tenir compte d'autres critres:
Les chemins d'accs aux donnes
On peut accder aux donnes d'une table par accs squentiel, par index, par
hachage, etc.

Les diffrents algorithmes possibles pour raliser un oprateur


Il existe par exemple plusieurs algorithmes pour la jointure
Souvent ces algorithmes dpendent des chemins d'accs disponibles

Les proprits statistiques de la base de donnes


Taille des tables
Slectivit des attributs
etc.

Cours BDA (UCP/M1): Optimisation

18

Chemins d'accs une table


Dpendent de l'organisation physique de la table
Accs squentiel: toujours possible
Accs par index
Pour chaque index sur un attribut A de la table:
Valeur v de A  liste d'adresses (ROWID) des articles ayant A=v
Intervalle de valeurs [v1,v2] de A  liste d'adresses des articles ayant
A [v1,v2]

Pour chaque index sur une liste d'attributs (A1, A2, , An)
Valeurs vi de Ai (1 i n)  liste d'adresses des articles ayant Ai=vi
Remarque: un index sur (A1, A2, , An) est utilisable aussi comme index sur
(A1, A2, , Ak), k < n

Accs par hachage


Si la table est organise par hachage sur un attribut A:
tant donne une valeur v de A  les articles ayant A=v
Cours BDA (UCP/M1): Optimisation

19

Algorithmes de jointure
La jointure est l'opration la plus coteuse
Son optimisation est trs importante

Plusieurs algorithmes, dpendants du chemin d'accs


Chacun peut tre meilleur dans des situations spcifiques
Choix entre plusieurs algorithmes  meilleure optimisation

Principaux algorithmes

Boucles imbriques simples


Tri-fusion
Jointure par hachage
Boucles imbriques avec index

Cours BDA (UCP/M1): Optimisation

20

Jointure par boucles imbriques


Algorithme boucles-imbriques
Entres: tables R, S
Sortie: table de jointure J
dbut
J :=
pour chaque r dans R rpter
pour chaque s dans S rpter
si r joignable s alors J := J {r  s}
fin rpter
fin rpter
fin

Cours BDA (UCP/M1): Optimisation

21

Exemple de jointure par boucles imbriques


Film (titre, anne)  Ralisateur (nom, titre)
Vertigo 1958

Spielberg
Hitchcock
Allen
Lang
Hitchcock
Allen
Kubrik

Jurassic Park
Psychose
Manhattan
Metropolis
Vertigo
Annie Hall
Shining

Annie Hall 1977

Spielberg
Hitchcock
Allen
Lang
Hitchcock
Allen
Kubrik

Jurassic Park
Psychose
Manhattan
Metropolis
Vertigo
Annie Hall
Shining

Brazil 1984

.......

Comparaison
Association
Cours BDA (UCP/M1): Optimisation

22

Analyse de cot
La lecture des articles d'une table dans une boucle:
On lit sur disque les pages de la table, pour les charger en mmoire
On lit en mmoire les articles de chaque page

Au niveau cot: seule compte la lecture des pages sur disque


Hypothses
Disque: TR pages pour R, TS pages pour S
Mmoire: 2 pages (une page pour chacune des tables)

Cot: TR + TR TS = O (TR TS )
Pour chaque page de R on lit toutes les pages de S et on fait la jointure
page par page entre les articles
S est lue TR fois et R une seule fois

On ne tient pas compte du cot de l'criture du rsultat, car il sera le


mme quel que soit l'algorithme de jointure
Cours BDA (UCP/M1): Optimisation

23

Analyse de cot (suite)


Que se passe-t-il si l'on dispose de N pages de mmoire?
Supposons qu'on alloue un tampon de K pages R et le reste S
Pour chaque lecture du tampon de R il faut lire S en entier
 On lit TR/K fois la table S et une seule fois la table R
 La lecture de S n'a besoin que d'un minimum de mmoire (1 page)

Donc on a besoin d'allouer le maximum de mmoire R (N-1 pages) et le


minimum S (1 page)

Cot: TR + TR/(N-1) TS
 Si R entre en mmoire alors le cot est TR + TS !

Conclusions
La jointure par boucles imbriques est inefficace sur de grandes tables
Toutefois, si l'une des relations entre en mmoire  elle est trs efficace

Cours BDA (UCP/M1): Optimisation

24

Jointure par tri-fusion


Algorithme tri-fusion
Entres: tables R, S
Sortie: table de jointure J = R R.A=S.B S
dbut
trier R sur l'attribut de jointure A
trier S sur l'attribut de jointure B
J := fusion (R, S)
fin
Fusion: on parcourt en parallle R et S, en joignant les articles
rR et sS qui ont r.A = s.B

Cours BDA (UCP/M1): Optimisation

25

Exemple de jointure par tri-fusion


Ralisateur (nom, titre)  Film (titre, anne)
Allen
Spielberg

Annie Hall
Jurassic Park
....

1977
1992

FUSION
Allen
Spielberg
Allen
Lang
Hitchcock
Kubrik
Hitchcock

Annie Hall
Jurassic Park
Manhattan
Metropolis
Psychose
Shining
Vertigo

Annie Hall
Brazil
Easy Rider
Greystoke
Jurassic Park
Manhattan
Metropolis
Psychose

TRI

TRI

Ralisateur

Film

Cours BDA (UCP/M1): Optimisation

1977
1984
1969
1984
1992
1979
1926
1960 ....

26

Fusion
Si l'une des tables a des valeurs distinctes pour l'attribut de jointure
 on la place en seconde position (table S)

Algorithme fusion
Entres: tables R trie sur A, S trie sur B
Sortie: table de jointure J = R R.A=S.B S
dbut
J := ; r := premier(R); s := premier(S)
tant que r existe et s existe rpter
si r.A = s.B alors
J := J {r R.A=S.B s}
r := suivant(R)
sinon si r.A < s.B alors r := suivant(R)
sinon s := suivant(S)
fin rpter
fin
Cours BDA (UCP/M1): Optimisation

27

Fusion (suite)
L'avantage du cas prcdent: on ne revient jamais en arrire,
donc un seul parcours des deux tables
Si les deux tables ont des doublons pour l'attribut de jointure
Pour chaque cas o r.A = v (n fois) et s.B = v (m fois), il faut produire
nm articles dans la jointure
A chaque nouvel article r, il faut prendre tous les s tel que s.B = r.A 
il faut revenir en arrire dans S  similaire aux boucles imbriques
Comportement similaire la fusion simple + boucles imbriques locales
(l o il y a des doublons dans R et S pour une mme valeur d'attribut de
jointure)

Cours BDA (UCP/M1): Optimisation

28

Analyse de cot tri-fusion


Tri
Pour une relation R et N pages de mmoire:
Cottri = 2 TR (1+logN-1(TR)) = O (TR log(TR))

Fusion
Fusion simple: un seul parcours de chaque relation
Cotfusion = TR + TS

Fusion avec doublons: en moyenne un peu moins bon


Au pire tous les articles ont la mme valeur pour l'attribut de jointure  cot
des boucles imbriques: Cotfusion = TR TS

Cot total: O (TR log(TR) + TS log(TS) + TR + TS)


 Le tri est plus coteux que la fusion
 Le cot de la jointure par tri-fusion est donn essentiellement par le tri
Cours BDA (UCP/M1): Optimisation

29

Comparaison boucles imbriques tri fusion


Pour des grandes relations  tri fusion plus efficace
Ex. TR = TS = 1000 pages
Cotbi TR TS = 1.000.000 lectures de pages
Cottf TR log(TR) + TS log(TS) 1000*10 + 1000*10 = 20.000
Autre avantage du tri-fusion: limination des doublons, groupement,
affichage ordonn plus rapides

Si l'une des relations entre en mmoire  boucles imbriques


plus efficace
Ex. TR = 30 pages, TS = 1000 pages
Cotbi TR + TS = 1030 lectures de pages
Cottf TR log(TR) + TS log(TS) 30*5 + 1000*10 > 10.000

Cours BDA (UCP/M1): Optimisation

30

Jointure par hachage


Algorithme hachage
Entres: tables R, S; fonction de hachage H
Sortie: table de jointure J = R R.A=S.B S
dbut
pour chaque r R rpter
placer r dans la page indique par H(r.A)
fin rpter
J :=
pour chaque s S rpter
lire la page p indique par H(s.B)
pour chaque r p rpter
si r.A=s.B alors J := J {r R.A=S.B s}
fin rpter
fin
Deux phases
1. Hachage d'une des relations
2. Calcul de la jointure avec l'autre relation
UCP, Master M1, cours BDA: Optimisation

31

Analyse de cot hachage


Hypothses
On considre 1 page / entre dans la table de hachage
On considre k >> 1articles/page
Notation: |R| = nombre d'articles dans la table R k*TR

Hachage: lecture R et pour chaque article il faut lire/crire la page de hachage


Cot hachage = TR lectures + |R| lectures + |R| critures = TR + 2|R| 2 |R|

Jointure: lecture S et pour chaque article de S il faut lire une page de hachage
Cot jointure = TS lectures + |S| lectures = TS + |S| |S|

Cot total = TR + TS + 2|R| + |S| 2 |R| + |S|


 Il est prfrable de faire le hachage sur la relation la plus petite
Remarque: si R hach tient en mmoire  le cot se rduit TR + TS

UCP, Master M1, cours BDA: Optimisation

32

Comparaison avec les autres algorithmes


Le nombre d'oprations dpend du nombre d'articles, pas du
nombre de pages
Dans le cas gnral, la comparaison avec le tri-fusion dpend du nombre
k d'articles par page (comparaison entre k et log(TR))

Si l'une des relations tient en mmoire  aussi efficace que les


boucles imbriques (mme plus)
Inconvnient hachage: seulement pour la jointure avec galit
Les boucles imbriques et mme le tri-fusion applicables aux jointures
avec ingalit

UCP, Master M1, cours BDA: Optimisation

33

Jointure avec une table indexe


Algorithme boucles-imbriques-index
Entres: tables R, S; index sur S.B
Sortie: table de jointure J = R R.A=S.B S
dbut
J :=
pour chaque r R rpter
pour chaque s IndexS.B (r.A) rpter
J := J {r R.A=S.B s}
fin rpter
fin rpter
fin
Fonction IndexS.B (r.A) : cherche l'aide de l'index les articles de S dont
l'attribut B a pour valeur r.A
Gnralement l'index retourne une liste d'adresses d'articles (ROWID), utilises
pour obtenir chaque article de S

Cours BDA (UCP/M1): Optimisation

34

Analyse de cot jointure avec index


Hypothses
Index B+, stockant les adresses des articles
k = nb. moyen d'entres dans une feuille de l'index
Slectivit de l'attribut S.B: S.B = nombre de valeurs distinctes de S.B / |S|
1/ S.B = le nombre moyen d'articles ayant une mme valeur pour S.B

Cot IndexS.B (r.A) = cot recherche index + cot lecture articles


Cot recherche index = cot recherche 1re feuille + cot parcours feuilles
Cot recherche 1re feuille = O (log(|S|))
Cot parcours feuilles = nb. feuilles ayant la valeur recherche = 1 / k*S.B

Cot lecture articles: pour chaque adresse de l'index il faut lire une page
Cot lecture articles = 1 / S.B

 Cot IndexS.B (r.A) = O (log(|S|) + 1 / S.B )

Cours BDA (UCP/M1): Optimisation

35

Analyse de cot (suite)


Le facteur slectivit
Index unique  S.B =1, donc le facteur est ngligeable (une page de
plus)
Index non-unique  1 / S.B peut devenir prdominant (au max. |S| !)

Cot jointure avec index: pour chaque r R on accde l'index


Cot total = TR + |R| cot IndexS.B (r.A)

 Cot total = O (|R| (log(|S|) + 1 / S.B ) )


Facteur slectivit
Index unique ou trs slectif  O (|R| log(|S|) )
Mauvaise slectivit (ex. p valeurs seulement)  O (|R| |S| / p)

Conclusion : efficace seulement si l'index est trs slectif


Cours BDA (UCP/M1): Optimisation

36

Statistiques
Importance des statistiques
La taille des relations permet de choisir entre les algorithmes de jointure
La slectivit des attributs permet de juger de l'opportunit de l'utilisation
d'un index
etc.

Module d'acquisition de statistiques sur la base


Une possibilit: dclenchement priodique
Une autre variante: estimation en temps rel par chantillonnage

Cours BDA (UCP/M1): Optimisation

37

Algbre physique
Plan d'excution algbrique
Plusieurs chemins d'accs possibles vers les donnes
Plusieurs algorithmes possibles pour un oprateur algbrique

 On a besoin d'une algbre "plus fine" qui exprime des chemins


d'accs et des oprations intermdiaires
Algbre physique
Chemins d'accs aux donnes
Oprations physiques

Cours BDA (UCP/M1): Optimisation

38

Oprateurs de l'algbre physique

OPERATIONS PHYSIQUES

CHEMINS DACCES
Critere

Sequentiel

Selection

TABLE

Filtre

Selection selon un critere

Parcours sequentiel
Adresse

Critere

Attribut(s)

Critere

Tri

TABLE

Jointure

Tri sur un attribut

Acces par adresse


Attribut(s)

Jointure selon un critere

Critere

Attribut(s)

Fusion

INDEX
Parcours dindex

Filtre dun ensemble


en fonction dun autre

Projection

Fusion de deux ensembles tries

Projection sur des attributs

Cours BDA (UCP/M1): Optimisation

39

Exemple de plan physique


Requte: quels films passent au Multiplex 20 heures?
SELECT Sance.film
FROM Cinma, Salle, Sance
WHERE Cinma.nom = 'Multiplex' AND
Sance.heure-dbut = 20 AND
Cinma.ID-cinma = Salle.ID-cinma AND
Salle.ID-salle = Sance.ID-salle

Plan logique possible

film

heure-dbut = 20

nom = 'Multiplex'
Cinma
Cours BDA (UCP/M1): Optimisation

Salle

Sance
40

Plan physique sans index, ni hachage

film
Projection
ID-salle
Fusion
ID-salle
Tri
ID-cinma
Fusion
ID-cinma

ID-salle
Tri

Tri

ID-cinma
Tri

nom='Multiplex'

heure-dbut=20

Slection

Slection

Squentiel

Squentiel

Cinma

Squentiel

Salle

Sance

Cours BDA (UCP/M1): Optimisation

41

Plan physique avec index sur les attributs de jointure

film
Projection
ID-salle
Jointure
ID-cinma
Jointure
heure-dbut=20
Slection
nom='Multiplex'

Adresse
Salle

Slection
Squentiel
Cinma

Cours BDA (UCP/M1): Optimisation

Adresse

ID-cinma
Index Salle(ID-cinma)

Sance
ID-salle
Index Sance(ID-salle)

42

valuation de requtes
Optimisation  plan d'excution physique
valuation: excution de ce plan
Accs aux donnes
Excution des algorithmes des oprateurs du plan
Gestion des flots de donnes entre oprations

Objectif: minimiser le nombre de lectures/critures de pages


Deux points de vue:
Obtenir le plus rapidement possible les premiers rsultats
Applications interactives

Optimisation globale, par rapport la production de tous les rsultats


Applications "batch"

 Le choix des techniques d'valuation peut tre diffrent


Cours BDA (UCP/M1): Optimisation

43

Techniques d'accs aux donnes


Parcours squentiel: systmatiquement optimis dans les SGBD
Principales techniques
Regroupement des pages sur des espaces contigus
"Extensions" dans Oracle

Lecture en avance: la lecture d'une page on lit galement les n suivantes


Typiquement n=7 ou n=15

Consquence
On lit les pages par blocs contigus, ce qui est plus rapide que la lecture
successive des pages

Cours BDA (UCP/M1): Optimisation

44

Utilisation d'un tampon


Tampon ("buffer", cache): zone de mmoire qui permet de
stocker des pages
Problme complexe: essayer de garder dans le tampon les pages
susceptibles d'tre rutilises "prochainement"
Principe: utilisation d'un gestionnaire du tampon
Un programme excutant une requte ne demande pas directement la
lecture/criture d'un page, mais s'adresse au gestionnaire du tampon
Le gestionnaire vrifie que la page se trouve dans le tampon (sinon il la lit
du disque) avant de raliser l'opration

Types de pages
Statiques: c'est le programme qui demande au gestionnaire de la librer
Volatiles: la page est la disposition du gestionnaire
Cours BDA (UCP/M1): Optimisation

45

Parcours d'index
La plupart des SGBD utilisent des variantes de l'arbre B
Utilisation pour les oprations pour lesquelles l'index est conu
Recherche par cl
Recherche par intervalle de cls

Optimisation d'autres oprations en utilisant l'index


viter l'accs aux articles si le(s) champ(s) recherchs sont dans l'index
Compter les articles qui respectent une condition lie la cl de l'index
Test d'existence sur une condition lie la cl de l'index

Cours BDA (UCP/M1): Optimisation

46

Parcours d'index avec tampon


Exemple: soit la requte suivante, en supposant un index sur anne
SELECT titre FROM Film WHERE anne IN (1956, 1934, 1992, 1997)

valuation simple: pour chaque valeur du IN on trouve dans l'index les


adresses d'articles et on lit pour chaque adresse l'article pour rcuprer le titre
valuation optimise:
On cherche dans l'index les adresses pour toutes les valeurs du IN
On groupe ces adresses par numro de page
On lit chaque page et on extrait les articles et leur champ titre
 Avantage: on lit chaque page d'articles une seule fois
 Inconvnient: on doit attendre la rcupration de toutes les adresses de l'index
avant de calculer des rsultats

Variante intermdiaire: tampon pour accumuler les adresses


Regroupement par page quand le tampon est plein

Cours BDA (UCP/M1): Optimisation

47

valuation des oprateurs


Types d'oprateurs
Pipeline: qui peuvent calculer des rsultats un par un, en demandant une
par une les valeurs d'entre
Non-pipeline: qui ont besoin de toutes les donnes d'entre pour pouvoir
produire des rsultats

Avantage des oprateurs pipeline


Peuvent produire rapidement des rsultats, adapts des applications
interactives
Pas besoin de stocker des donnes intermdiaires, car chaque rsultat d'un
oprateur peut tre consomm tout de suite par un autre oprateur
 gain de performances

Les oprateurs de l'algbre physique prsente:


Tous sont pipeline sauf le tri
Cours BDA (UCP/M1): Optimisation

48

Implmentation des oprateurs


Implmentation sous forme d'itrateurs
Itrateur: objet qui chaque appel produit le rsultat suivant
Objectif: produire des rsultats au fur et mesure
Un plan compos d'itrateurs est lui-mme un itrateur

Compatibles la fois avec les oprateurs pipeline et non-pipeline


Principales oprations sur un itrateur: initialisation( ), suivant( )

Exemple
Projection
pour chaque article a en entre rpter
produire projection(a)

Itrateur projection
a = entre.suivant()
produire projection(a)

Cours BDA (UCP/M1): Optimisation

49

Excution d'un plan


On demande le rsultat suivant l'oprateur racine
Celui-ci demande le rsultat suivant ses entres, etc.

Propagation des commandes racine  feuilles


Propagation des donnes feuilles  racine
capacit

capacit
Projection

Projection
ID-cinma

ID-cinma
Jointure

Jointure
nom='Multiplex'

nom='Multiplex'
Slection
Squentiel
Cinma

Cours BDA (UCP/M1): Optimisation

Adresse

Slection
Squentiel
Salle

Squentiel
Cinma

Salle
ID-cinma
Index Salle(ID-cinma)

50

Optimisation dans Oracle


Approche classique
Gnration de plusieurs plans d'excution physiques
Estimation du cot de chaque plan
Choix du meilleur plan et excution

Algbre physique
Chemins d'accs aux donnes: squentiel, index, hash, cluster
Oprateurs de traitement: boucles imbriques, filtre, tri, fusion,

Outils
EXPLAIN: visualisation des plans d'excution
ANALYSE: production de statistiques
TKPROF: mesure du temps d'excution

Cours BDA (UCP/M1): Optimisation

51

Chemins d'accs aux donnes dans Oracle


Parcours squentiel
TABLE ACCESS FULL

Accs direct par adresse


TABLE ACCESS BY (INDEX|USER|) ROWID

Accs par index


INDEX (UNIQUE|RANGE|) SCAN

Accs par hachage


TABLE ACCESS HASH

Accs par cluster


TABLE ACCESS CLUSTER

Cours BDA (UCP/M1): Optimisation

52

Oprateurs physiques
Pour la jointure
Boucles imbriques: NESTED LOOPS
Tri-fusion: SORT JOIN, MERGE JOIN
Hachage: HASH JOIN

Autres oprations

Union d'ensembles d'articles: CONCATENATION, UNION


Intersection d'ensembles d'articles: INTERSECTION
Diffrence d'ensembles d'articles: MINUS
Filtrage d'articles d'une table bas sur une autre table: FILTER
Intersection d'ensembles de ROWID: AND-EQUAL

Cours BDA (UCP/M1): Optimisation

53

Plan d'excution EXPLAIN


Commande
EXPLAIN PLAN FOR
SELECT FROM WHERE

Description textuelle du plan structure sous forme de table


(PLAN_TABLE)
Chemins d'accs
Oprateurs physiques
Ordre des oprateurs: structure d'arbre

Cours BDA (UCP/M1): Optimisation

54

Exemple
Schma relationnel
CINEMA (ID-cinma*, Nom, Adresse)
SALLE (ID-salle, Nom, Capacit+, ID-cinma+)
FILM (ID-film, Titre, Anne, ID-ralisateur+)
SEANCE (ID-sance*, Heure-dbut, Heure-fin, ID-salle+, ID-film)
ARTISTE (ID-artiste*, Nom, Date-naissance)
* : index unique sur l'attribut
+ : index non-unique sur l'attribut

Cours BDA (UCP/M1): Optimisation

55

Exemple (suite)
Requte: les films qui commencent 20h au Multiplex
SELECT ID-film
FROM CINEMA, SALLE, SEANCE
WHERE CINEMA.ID-cinma = SALLE.ID-cinma AND
SALLE.ID-salle = SEANCE.ID-salle AND
CINEMA.nom = 'Multiplex' AND
SEANCE.Heure-dbut = 20

Plan d'excution produit par EXPLAIN


0 SELECT STATEMENT
1 NESTED LOOPS
2 NESTED LOOPS
3 TABLE ACCESS FULL CINEMA
4 TABLE ACCESS BY INDEX ROWID SALLE
5 INDEX RANGE SCAN SALLE-IDCINEMA
6 TABLE ACCESS BY INDEX ROWID SEANCE
5 INDEX RANGE SCAN SEANCE-IDSALLE
Cours BDA (UCP/M1): Optimisation

56

Exemple (suite)
Remarque: certaines oprations ne sont pas reprsentes
Ex. Les slections sont considres automatiquement appliques sur
l'accs aux articles de la table

Reprsentation sous forme d'arbre du plan EXPLAIN


NESTED LOOPS 1
NESTED LOOPS 2

BY ROWID

6
SEANCE

BY ROWID

4
SALLE

FULL SCAN

INDEX SCAN
3

CINEMA

INDEX SCAN

SEANCE-IDSALLE

SALLE-IDCINEMA
Oprateur physique
Chemin d'accs

Cours BDA (UCP/M1): Optimisation

57

Exemples de plans d'excution


Slection sans index
SELECT * FROM CINEMA WHERE nom = 'Multiplex'
Plan d'excution
0 SELECT STATEMENT
1 TABLE ACCESS FULL CINEMA

Slection avec index


SELECT * FROM CINEMA WHERE ID-cinma = 25
Plan d'excution
0 SELECT STATEMENT
1 TABLE ACCESS BY INDEX ROWID CINEMA
2 INDEX UNIQUE SCAN CINEMA-IDCINEMA

Cours BDA (UCP/M1): Optimisation

58

Slection multiple
Slection conjonctive avec un index
SELECT Capacit FROM SALLE
WHERE ID-cinma = 25 AND Nom = 'Salle 1'
Plan d'excution
0 SELECT STATEMENT
1 TABLE ACCESS BY INDEX ROWID SALLE
2 INDEX RANGE SCAN SALLE-IDCINEMA

Slection conjonctive avec deux index


SELECT Nom FROM SALLE
WHERE ID-cinma = 25 AND Capacit > 150
Plan d'excution
0 SELECT STATEMENT
1 TABLE ACCESS BY INDEX ROWID SALLE
2 AND-EQUAL
3 INDEX RANGE SCAN SALLE-IDCINEMA
4 INDEX RANGE SCAN SALLE-CAPACITE
Cours BDA (UCP/M1): Optimisation

59

Slection disjonctive
Slection disjonctive avec index
SELECT Nom FROM SALLE
WHERE ID-cinma = 25 OR Capacit > 150
Plan d'excution
0 SELECT STATEMENT
1 CONCATENATION
2 TABLE ACCESS BY INDEX ROWID SALLE
3 INDEX RANGE SCAN SALLE-CAPACITE
4 TABLE ACCESS BY INDEX ROWID SALLE
5 INDEX RANGE SCAN SALLE-IDCINEMA

Pour la mme requte, un plan alternatif


0 SELECT STATEMENT
1 TABLE ACCESS FULL SALLE

Cours BDA (UCP/M1): Optimisation

60

Jointure avec index


Requte
SELECT CINEMA.Nom, Capacit
FROM CINEMA, SALLE
WHERE CINEMA.ID-cinma = SALLE.ID-cinma
Plan d'excution
0 SELECT STATEMENT
1 NESTED LOOPS
2 TABLE ACCESS FULL SALLE
3 TABLE ACCESS BY INDEX ROWID CINEMA
4 INDEX UNIQUE SCAN CINEMA-IDCINEMA

Cours BDA (UCP/M1): Optimisation

61

Jointure sans index


Requte
SELECT Titre
FROM FILM, SEANCE
WHERE Heure-dbut = 14 AND FILM.ID-film = SEANCE.ID-film
Plan d'excution
0 SELECT STATEMENT
1 MERGE JOIN
2 SORT JOIN
3 TABLE ACCESS FULL SEANCE
4 SORT JOIN
5 TABLE ACCESS FULL FILM

Plan alternatif (si par exemple FILM tient en mmoire)


0 SELECT STATEMENT
1 NESTED LOOPS
2 TABLE ACCESS FULL FILM
3 TABLE ACCESS FULL SEANCE

Cours BDA (UCP/M1): Optimisation

62

Jointure et slection avec index


Requte
SELECT CINEMA.Nom, Capacit
FROM CINEMA, SALLE
WHERE CINEMA.ID-cinma = SALLE.ID-cinma AND
Capacit > 150
Plan d'excution
0 SELECT STATEMENT
1 NESTED LOOPS
2 TABLE ACCESS BY INDEX ROWID SALLE
3 INDEX RANGE SCAN SALLE-CAPACITE
4 TABLE ACCESS BY INDEX ROWID CINEMA
5 INDEX UNIQUE SCAN CINEMA-IDCINEMA

Cours BDA (UCP/M1): Optimisation

63