Vous êtes sur la page 1sur 8

Optimisation des

bases de donnes
Mise en uvre sous Oracle
Laurent Navarro

Avec la contribution technique


dEmmanuel Lecoester

2010 Pearson Education France Optimisation des bases de donnes Laurent Navarro

Pearson Education France a apport le plus grand soin la ralisation de ce livre afin de
vous fournir une information complte et fiable. Cependant, Pearson Education France
nassume de responsabilits, ni pour son utilisation, ni pour les contrefaons de brevets
ou atteintes aux droits de tierces personnes qui pourraient rsulter de cette utilisation.
Les exemples ou les programmes prsents dans cet ouvrage sont fournis pour
illustrer les descriptions thoriques. Ils ne sont en aucun cas destins une utilisation
commerciale ou professionnelle.
Pearson Education France ne pourra en aucun cas tre tenu pour responsable des
prjudices oudommages de quelque nature que ce soit pouvant rsulter de lutilisation
de ces exemples ou programmes.
Tous les noms de produits ou marques cits dans ce livre sont des marques dposes par
leurs propritaires respectifs.
Publi par Pearson Education France
47 bis, rue des Vinaigriers
75010 PARIS
Tl. : 01 72 74 90 00
www.pearson.fr
Mise en pages : TyPAO
ISBN : 978-2-7440-2412-2
Copyright 2010 Pearson Education France
Tous droits rservs

Aucune reprsentation ou reproduction, mme partielle, autre que celles prvues larticle L. 122-5 2 et 3 a)
du code de la proprit intellectuelle ne peut tre faite sans lautorisation expresse de Pearson Education France
ou, le cas chant, sans le respect des modalits prvues larticle L. 122-10 dudit code.

2010 Pearson Education France Optimisation des bases de donnes Laurent Navarro

Table des matires


Prface................................................................................................................................................

IX

propos de lauteur.......................................................................................................................

XI

Introduction......................................................................................................................................

Introduction aux SGBDR. ..................................................................................................

1.1

Quest-ce quune base de donnes?. ...................................................................

1.1.1

Systme de gestion des bases de donnes.......................................

Modle de stockage des donnes..........................................................................

1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6

1.2

Organisation des donnes ...................................................................


Le RowID................................................................................................
Online Redo Log et Archived Redo Log.........................................
Organisation des tables. .......................................................................
Row Migration et Row Chaining.......................................................
Le cache mmoire ................................................................................

10
10
11
12
13

1.3

Intrt des index dans les SGBDR. ......................................................................

14

1.4

Analyse du comportement du SGBDR................................................................

15

1.4.1
1.4.2

15

Excution dune requte SQL............................................................


Optimiseur CBO (Cost Based Optimizer).......................................

16

Axe 1
tude et optimisation dumodle de donnes
2

Modle relationnel. ...............................................................................................................

21

2.1

Prsentation. .............................................................................................................

21

2.2

Les bons rflexes sur le typage des donnes.......................................................

25

2.2.1

28

Les types sous Oracle...........................................................................

2010 Pearson Education France Optimisation des bases de donnes Laurent Navarro

IV

Optimisation des bases de donnes

2.2.2
2.2.3
3

Les types sous SQL Server. ................................................................


Les types sous MySQL........................................................................

30

Normalisation, base du modle relationnel....................................................................

33

3.1

Normalisation...........................................................................................................

33

3.1.1
3.1.2
3.1.3
3.1.4
3.1.5

Premire forme normale (1NF)..........................................................


Deuxime forme normale (2NF). ......................................................
Troisime forme normale (3NF)........................................................
Forme normale de Boyce Codd (BCNF).........................................
Autres formes normales.......................................................................

34

Dnormalisation et ses cas de mise en uvre.....................................................

38

3.2.1
3.2.2

La dnormalisation pour historisation..............................................


La dnormalisation pour performance et simplification
en environnement OLTP......................................................................
La dnormalisation pour performance
en environnement OLAP.....................................................................

38

Notre base de test. ...................................................................................................

43

3.2

3.2.3
3.3

31

35
36
37
38

40
42

Axe 2
tude et optimisation desrequtes
4

Mthodes et outils de diagnostic........................................................................................

49

4.1

Approche pour optimiser........................................................................................

49

4.1.1
4.1.2
4.1.3

Mesurer....................................................................................................
Comprendre le plan dexcution........................................................
Identifier les requtes qui posent des problmes...........................

50

Outils complmentaires..........................................................................................

64

4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
4.2.6

64

4.2

Compteurs de performance Windows. .............................................


SQL Tuning Advisor (Oracle)............................................................
SQL Access Advisor (Oracle)............................................................
SQL Trace (Oracle)...............................................................................
Outils SQL Server.................................................................................
Outils MySQL........................................................................................

2010 Pearson Education France Optimisation des bases de donnes Laurent Navarro

55
61

65
66
67
72
73

Table des matires

Techniques doptimisation standard au niveau base de donnes.............................

77

5.1

Ancienne mthode de collecte. ..........................................................


Nouvelle mthode de collecte............................................................
Slectivit, cardinalit, densit...........................................................

77
78
78
80

Utilisation des index. ..............................................................................................

85

5.2.1
5.2.2
5.2.3
5.2.4
5.2.5
5.2.6

86

Statistiques sur les donnes. ..................................................................................

5.1.1
5.1.2
5.1.3
5.2

5.3

Index B*Tree..........................................................................................
Index sur fonction..................................................................................
Reverse Index.........................................................................................
Index bitmap...........................................................................................
Bitmap Join Index. ................................................................................
Full Text Index. ......................................................................................

Travail autour des tables.........................................................................................

5.3.1
5.3.2
5.3.3
5.3.4
5.3.5
5.3.6
6

Paramtres de table. ..............................................................................


Index Organized Table ........................................................................
Cluster. .....................................................................................................
Partitionnement des donnes..............................................................
Les vues matrialises..........................................................................
Reconstruction des index et des tables.............................................

Techniques doptimisation standard des requtes. ......................................................


6.1
Rcriture des requtes...........................................................................................

6.1.1
6.1.2
6.1.3
6.1.4
6.1.5
6.1.6
6.1.7
6.1.8
6.2

Transformation de requtes.................................................................
IN versus jointure..................................................................................
Sous-requtes versus anti-jointures...................................................
Exists versus Count...............................................................................
Exists versus IN......................................................................................
Clause Exists * versus constante. ......................................................
Expressions sous requtes...................................................................
Agrgats: Having versus Where........................................................

Bonnes et mauvaises pratiques..............................................................................

6.2.1
6.2.2
6.2.3
6.2.4

Mlange des types.................................................................................


Fonctions et expressions sur index....................................................
Impact de loprateur <> sur les index. ...........................................
Rutilisation de vue. .............................................................................

2010 Pearson Education France Optimisation des bases de donnes Laurent Navarro

99
100
101
108
111
118
118
122
132
135
146
148
153
153
154
155
156
158
159
160
161
162
163
163
163
164
164

VI

Optimisation des bases de donnes

6.2.5
6.2.6
6.2.7
6.2.8
6.2.9
6.2.10
6.2.11
6.2.12
6.2.13
6.2.14
6.2.15
6.2.16
6.2.17
7

Utilisation de tables temporaires.......................................................


Utilisation abusive de SELECT *. .....................................................
Suppression des tris inutiles................................................................
Utilisation raisonne des oprations ensemblistes........................
Union versus Union ALL.....................................................................
Count(*) versus count(colonne). .......................................................
Rduction du nombre de parcours des donnes.............................
LMD et cls trangres........................................................................
Suppression temporaire des index et des CIR................................
Truncate versus Delete.........................................................................
Impacts des verrous et des transactions...........................................
Optimisation du COMMIT..................................................................
DBLink et vues......................................................................................

165

Techniques doptimisation desrequtes avances........................................................

177

7.1

Utilisation des hints sous Oracle...........................................................................

177

7.1.1
7.1.2
7.1.3
7.1.4
7.1.5
7.1.6

Syntaxe gnrale....................................................................................
Les hints Optimizer Goal. ...................................................................
Les hints Access Path. ..........................................................................
Les hints Query Transformation........................................................
Les hints de jointure..............................................................................
Autres hints.............................................................................................

179

Excution parallle..................................................................................................

183

7.2.1

Les hints de paralllisme.....................................................................

185

Utilisation du SQL avanc.....................................................................................

186

7.3.1
7.3.2
7.3.3
7.3.4
7.3.5
7.3.6
7.3.7
7.3.8
7.3.9

186

7.2
7.3

Les Grouping Sets.................................................................................


Rollup Group By....................................................................................
Cube Group By.......................................................................................
Utilisation de WITH..............................................................................
Les fonctions de classement (ranking).............................................
Autres fonctions analytiques. .............................................................
Linstruction MERGE...........................................................................
Optimisation des updates multitables...............................................
Insertion en mode Direct Path............................................................

2010 Pearson Education France Optimisation des bases de donnes Laurent Navarro

165
166
166
169
170
171
172
173
173
173
175
176

179
180
181
182
183

188
189
191
192
194
195
196
198

Table des matires VII

7.4

PL/SQL. ....................................................................................................................

198

7.4.1

Impact des triggers................................................................................

198

7.4.2

Optimisation des curseurs (BULK COLLECT)..............................

200

7.4.3

Optimisation du LMD (FORALL).....................................................

203

7.4.4

SQL dynamique et BULK. ..................................................................

208

7.4.5

Traitement des exceptions avec FORALL.......................................

209

7.4.6

Utilisation de cache de donnes.........................................................

210

7.4.7

Utilisation du profiling.........................................................................

212

7.4.8

Compilation du code PL/SQL............................................................

212

Axe 3
Autres pistes doptimisation
8

Optimisation applicative (hors SQL)..............................................................................

217

8.1

Impact du rseau sur le modle client/serveur....................................................

217

8.2

Regroupement de certaines requtes....................................................................

217

8.3

Utilisation du binding.............................................................................................

219

8.4

Utilisation de cache local lapplication. ...........................................................

221

8.5

Utilisation du SQL procdural. .............................................................................

221

8.6

Gare aux excs de modularit. ..............................................................................

221

Optimisation de linfrastructure.......................................................................................

223

9.1

Optimisation de lexcution du SGBDR. ............................................................

223

9.1.1

Ajustement de la mmoire utilisable................................................

223

9.1.2

Rpartition des fichiers. .......................................................................

224

Optimisation matrielle..........................................................................................

224

9.2.1

Le CPU.....................................................................................................

224

9.2.2

La mmoire vive (RAM).....................................................................

225

9.2.3

Le sous-systme disque. ......................................................................

225

9.2.4

Le rseau..................................................................................................

226

Conclusion.........................................................................................................................................

227

9.2

2010 Pearson Education France Optimisation des bases de donnes Laurent Navarro

VIII

Optimisation des bases de donnes

Annexes
Gestion interne des enregistrements................................................................................

231

A.1

Le RowID. ................................................................................................................

231

A.2

Row Migration et Row Chaining..........................................................................

232

Statistiques sur les donnes plus en dtail......................................................................

235

B.1

Statistiques selon lancienne mthode de collecte.............................................

235

B.2

Statistiques selon la nouvelle mthode de collecte............................................

236

B.3

Histogrammes. .........................................................................................................

240

B.4

Facteur de foisonnement (Clustering Factor).....................................................

241

Scripts de cration des tables detest bigemp et bigdept..............................................

245

Glossaire. .................................................................................................................................

249

Index...................................................................................................................................................

251

2010 Pearson Education France Optimisation des bases de donnes Laurent Navarro