BDA Cours Handout
BDA Cours Handout
Nicolas Travers
1 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans
Plan
1 Optimisation : Opérations
2 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
1 Optimisation : Opérations
Principes de l’Optimisation
Indexes
Algorithmes des Opérateurs
Algorithmes de Sélection
Algorithme de tri
Algorithmes de projection
Algorithmes de jointure
3 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
4 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Disque dur
5 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
6 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Entrées/Sorties
7 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
8 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Page dique
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Types de données
Types numériques
Type Taille Interval de valeurs
TINYINT 1 octet 0 à 255 ou -128 à 127
SMALLINT 2 octets -32768 à 32767 ou 0 à 65535
MEDIUMINT 3 octets -8388608 à 8388607 ou 0 à 16777215
INT, INTEGER 4 octets -2147483648 à 2147483647 ou 0 à 4294967295
BIGINT 8 octets ∼ 1019
FLOAT(p) 4 octets if 0≤p≤24, nombre de décimales
8 octets if 25≤p≤53
FLOAT 8 octets Par defaut, 53 décimales
DOUBLE(p), REAL 8 octets
DECIMAL(M,D), NUM(M,D) Variable
BIT(M) ∼ (M + 7)/8 octets
Types Dates et Heures Types textuel
Type Taille Type Taille
DATE 3 octets CHAR(M) M octets ou ou M x 2 octets, 0≤M≤255
TIME 3 octets BINARY(M) M octets, 0≤M≤255
DATETIME 8 octets VARCHAR(M) M + 1o (0-255 o), M + 2o (> 255 o)
TIMESTAMP 4 octets BLOB, TEXT L + 2 octets, where L≤215
YEAR 1 octet ENUM(’v1’,’v2’,...) 1o (255 valeurs), 2o (65 535 valeurs)
SET(’v1’,’v2’,...) 1, 2, 3, 4, or 8 octets (64 valeurs maximum)
11 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
12 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Notations
Tables :
|R| : Nb de pages de la relation R
|R0 | : Nb de pages de la relation R après modification
||R|| : Nb de n-uplets de la relation R
||R0 || : Nb de n-uplets de la relation R après sélection
Index :
|I| : Nb de pages à lire pour une tranversée d’index
(ie. hauteur de l’arbre)
k : Ordre du l’arbre B
φ : clustering factor (cf. indexation)
Sel : Sélectivité d’un attribut
∆ : Nb de feuilles de I sélectionnées
|M| : Nb de pages tampons en MC pour la lecture
13 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
1 Optimisation : Opérations
Principes de l’Optimisation
Indexes
Algorithmes des Opérateurs
Algorithmes de Sélection
Algorithme de tri
Algorithmes de projection
Algorithmes de jointure
14 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Plan
15 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
16 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
17 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Exemple d’index
nfe106 nfe205
@ @ @ @ @ @ @ @ @
18 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
19 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
20 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
21 / 177
6. Organization Index (Oracle), Clustered index (SQLServer/DB2)
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Arbre B+
22 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Arbre B+ : caractéristiques
23 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Arbre B+ : Recherche
24 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
25 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Arbre B+ : Insertion
26 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
27 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
27 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
27 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
27 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
27 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
27 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Btree dense :
CREATE INDEX Cours nom ON Cours (nom) ;
Btree non-dense sous Oracle :
CREATE TABLE Cours (. . . ) ORGANIZATION INDEX ;
Entrainement (Applet Java) :
http: // cedric. cnam. fr/ ˜ traversn/ teaching/ btree/
29 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Hachage
30 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Hachage : Caractéristiques
Hachage : Exemple
0 1 2
nfe106 … nfe204 …
nfp107 … nfe205 …
nsy122 … nsy218 …
nsy219 …
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Partitionnement
33 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Bitmap
34 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Bitmap : Motivation
35 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Bitmap : Structure
36 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Bitmap : Exemple
37 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Bitmap : Caractéristiques
Stockage :
Codage par tranche de 8 bits
Page de taille 8ko (moins l’en-tête)
l m
Taille d’un vecteur en octets : ||R||
l 8 m
||R||
Taille d’un vecteur en pages : 8×8000
l m
||R||
Taille de l’index : cardresp × 64000 pages
Création d’un Bitmap :
CREATE BITMAP INDEX Cours Nom bitmap ON Cours (NOM) ;
38 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
39 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
40 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Index : Récapitulatif
41 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Index : Bonus
Index couvrant
Ajoute une donnée associée à la clé
Permet d’éviter un accès aux données
Prend plus de place
Requêtes multi-critères
1 un Arbre B+ pour chaque attribut du prédicat
(2x INDEX RANGE SCAN)
2 Intersection des pointeurs retournés (AND-EQUAL)
3 Accès aux pages du résultat (TABLE ACCESS BY ROWIDS)
42 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
1 Optimisation : Opérations
Principes de l’Optimisation
Indexes
Algorithmes des Opérateurs
Algorithmes de Sélection
Algorithme de tri
Algorithmes de projection
Algorithmes de jointure
43 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Opérateurs Relationnels
44 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
1 Optimisation : Opérations
Principes de l’Optimisation
Indexes
Algorithmes des Opérateurs
Algorithmes de Sélection
Algorithme de tri
Algorithmes de projection
Algorithmes de jointure
45 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Sélection : Algorithmes
46 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
47 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Tampon de sortie
CODE Intitule Responsable
NFP107 Initiation à la Base de Données Michel Crucianu
48 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Tampon de sortie
CODE Intitule Responsable
NFP107 Initiation à la Base de Données Michel Crucianu
NFE205 Base de Données Avancées 2 Michel Crucianu
48 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Tampon de sortie
CODE Intitule Responsable
NFP107 Initiation à la Base de Données Michel Crucianu
NFE205 Base de Données Avancées 2 Michel Crucianu
48 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
50 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
52 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
53 / 177
13. Card(R(a)) : nb de valeurs distinctes
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
54 / 177
14. facteur de foisonnement / regroupement des ROWIDS par page
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
55 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
56 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
57 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
58 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
59 / 177
15. Sous Oracle : ORA HASH. Peut être surchargée
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
1 Optimisation : Opérations
Principes de l’Optimisation
Indexes
Algorithmes des Opérateurs
Algorithmes de Sélection
Algorithme de tri
Algorithmes de projection
Algorithmes de jointure
60 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Nécessaire pour :
Ordonner le résultat (Order By)
Agrégation (Group By / Count,Sum,Avg . . . )
Éliminer les doublons (Distinct)
Jointure par fusion (Sort Merge Join)
61 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
63 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
64 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
65 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
A chaque étape
Fusion de |M| − 1 partitions
Les |M| − 1 listes sont fusionnées (et non deux)
Chaque liste fait |M| pages à la première étape
Résultat stocké dans le tampon
Résultat |M| − 1 plus grand que l’étape précédente
|M| − 1 partitions de moins
Lecture et écriture de |R0 | pages
l m
Nombre d’étapes de fusion : log|M|−1 (|R0 |)
l m
Coût de la fusion : 2 × |R0 | × log|M|−1 (|R0 |)
66 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
67 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
68 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
1 Optimisation : Opérations
Principes de l’Optimisation
Indexes
Algorithmes des Opérateurs
Algorithmes de Sélection
Algorithme de tri
Algorithmes de projection
Algorithmes de jointure
69 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Projection
70 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Projection : Avantages
Place mémoire
Taille du tuple minimum
⇒ Plus de tuples par page
⇒ Moins de pages temporaires à écrire et à lire
Peu couteux en traitement
Pipeline 17
⇒ Intégré dans tous les opérateurs lors d’une écriture en
mémoire/disque
71 / 177
17. Transparent 5
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Projection : Exemple
Table Cours :
5000 tuples de taille 120 o (3 + 3 × (4 + 1) + 2 × (50 + 1))
PCTFREEde 10%
5000
|Cours| = (8192−192)×90% = 64 pages
120
72 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
HASH AGGREGATE
73 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Table en mémoire :
74 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Table en mémoire :
L2 A2 B2
C2 G1 H2
X2 D1 E2
F1 Y1 Z1
Pages disques :
74 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Table en mémoire :
L2 A2 K1
C3 G2 B1
X2 D1
F1 Y1
Pages disques :
B2
H2
E2
Z1
74 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Table en mémoire :
L2 P1 K1
C3 B1
X2
F1
Pages disques :
A2 B2
G2 H2
D1 E2
Y1 Z1
74 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Table en mémoire :
U2 P1 K1
B1
N1
Z1
Pages disques :
L2 A2 B2
C3 G2 H2
X2 D1 E2
F1 Y1 Z1
74 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Table en mémoire :
U2 P1 H1
I1 A2 Z1
L1 S1
X1
Pages disques :
L2 A2 B2
C3 G2 H2
X2 D1 E2
F1 Y1 Z1
K1
B1
N1
Z1 74 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Table en mémoire :
Pages disques :
L2 A2 B2
C3 G2 H2
X2 D1 E2
F1 Y1 Z1
U2 P1 K1
I1 A2 B1
L1 S1 N1
X1 Z1
H1
Z1
74 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Pages disques :
L2 A2 B2
C3 G2 H2
X2 D1 E2
F1 Y1 Z1
U2 P1 K1
I1 A2 B1
L1 S1 N1
X1 Z1
H1
Z1
Pages mémoire :
L3 U2
C3 I1
X3
F1
Résultat :
74 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Pages disques :
A2 B2
G2 H2
D1 E2
Y1 Z1
P1 K1
A2 B1
S1 N1
Z1
H1
Z1
Pages mémoire :
A4 P1
G2 S1
D1
Y1
Résultat :
L3 U2
C3 I1
X3
F1
74 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Pages disques :
B2
H2
E2
Z1
K1
B1
N1
Z1
H1
Z1
Pages mémoire :
B3 K1
H3 N1
E2
Z3
Résultat :
L3 U2 D1
C3 I1 Y1
X3 A4 P1
F1 G2 S1
74 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Pages disques :
Pages mémoire :
Résultat :
L3 U2 D1 B3 K1
C3 I1 Y1 H3 N1
X3 A4 P1 E2
F1 G2 S1 Z3
74 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
75 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
|R0 |
Si |M|−1 > |M|
Hachage récursif sur chaque partition
Fonction h0 différente
Algorithme identique
Coût final : Accès à R + 2 × |R0 | + 2 × α × |R0 |
α ≥ 0 (nombre de hachages successifs)
76 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
77 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Table en mémoire :
ABCE FHLX
78 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Table en mémoire :
BDGH LXYZ
Stockage temporaire
1) Phase de Tri
ABCE FHLX
78 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Table en mémoire :
BCGK NPUZ
Stockage temporaire
1) Phase de Tri
ABCE FHLX BDGH LXYZ
78 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Table en mémoire :
AHIL SXZ
Stockage temporaire
1) Phase de Tri
ABCE FHLX BDGH LXYZ BCGK NPUZ
78 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Table en mémoire :
Stockage temporaire
1) Phase de Tri
ABCE FHLX BDGH LXYZ BCGK NPUZ AHIL SXZ
78 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Table en mémoire :
Stockage temporaire
1) Phase de Tri
ABCE FHLX BDGH LXYZ BCGK NPUZ AHIL SXZ
2) Phase de Fusion
ABCD EFGH LXYZ
78 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Table en mémoire :
Stockage temporaire
1) Phase de Tri
ABCE FHLX BDGH LXYZ BCGK NPUZ AHIL SXZ
2) Phase de Fusion
ABCD EFGH LXYZ ABCG HIKL NPSU XZ
78 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Table en mémoire :
Stockage temporaire
1) Phase de Tri
ABCE FHLX BDGH LXYZ BCGK NPUZ AHIL SXZ
2) Phase de Fusion
ABCD EFGH LXYZ ABCG HIKL NPSU XZ
2) Phase de Fusion
ABCD EFGH IKLN PSUX YZ
78 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Accès à R : ⇒ R0
Écriture des blocs triés sans doublons : |R0 |
l m
Tri fusion des blocs : 2 × |R0 | log|M|−1 (|R0 |)
l m
Coût global : Accès à R + |R0 | +2× |R0 | × log|M|−1 |R0 |
79 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Projection : Exercice
80 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
1 Optimisation : Opérations
Principes de l’Optimisation
Indexes
Algorithmes des Opérateurs
Algorithmes de Sélection
Algorithme de tri
Algorithmes de projection
Algorithmes de jointure
81 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Jointures
82 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Jointures : 4 algorithmes
83 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
84 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
85 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
85 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
85 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
85 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
85 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
NestedLoopJoin : Complexité
86 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
87 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
88 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
88 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
90 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Tri : l m
0 0 0
Accès à R + |R | + 2 × |R | × log|M|−1 (|R |) 20
l m
0 0 0
Accès à S + |S | + 2 × |S | × log|M|−1 (|S |)
Fusion : |R0 | + |S 0 |
Forte domination du tri dans la jointure
Utile pour :
Tables non indexées
Tables déjà triées (suppression du coût de tri)
Elimination des duplicats ou tri
91 / 177
20. Formule du Tri-Fusion
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
92 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
93 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Accès à R
Pour chaque n-uplet t de R0
Placer πa,x (t) dans h(t.a)
Accès à S
Pour chaque n-uplet t de S 0
Vérifier si t.a existe dans la partition h(t.a)
Si oui, joindre les tuples
94 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Hachage R : Accès à R
Jointure : Accès à S
Coût total : Accès à R + Accès à S
Limite d’utilisation : |R0 | < |M| − 1
95 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
Si pour R et S :
Supérieure à |M| − 1 (après projection)
Découpé en |M| − 1 partitions
Taille max d’une partition |M| − 2
Algorithme :
1 Partitionnement de R et S sur l’attribut de jointure
(|M| − 1 partitions)
2 NESTED LOOPS sur chaque partition de même valeur de
hachage
96 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
97 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans Intro Indexes Opérations Sel Sort Proj Join
98 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Jointures : Rappels
99 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Introduction
Introduction : Exemple
Soit le schéma :
Cours (CODE, Intitule, Responsable)
Auditeurs (CODE UE, CODE AUDITEUR, Annee, Note)
Soit la requête :
Liste des années où Nicolas Travers a eu des auditeurs ?
⇒ SELECT Annee
FROM Cours, Auditeurs
WHERE Responsable = ’Nicolas Travers’ AND
CODE = CODE UE ;
101 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
102 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
103 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Traduction
SQL ⇒ ⇒ PEL ⇒ Optimisation ⇒ PEP
algébrique
104 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Minimisation du temps
Temps d’évaluation globale de la requête
Temps de réponse du premier résultat
Point d’intérêt majeur
Nombre de pages Lues et Ecrites (I/O)
Ecriture du résultat final
N’est pas pris en compte dans le calcul
105 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
106 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
107 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
108 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
109 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
110 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
SELECT intitule
FROM Cours, Auditeur
WHERE CODE UE = CODE
AND Responsable = ’Nicolas Travers’
πintitule (σresponsable=0 NT 0 (Cours n
oCODE UE =CODE Auditeur ))
111 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Règles de réécriture
1 Commutativité de la jointure :
RonS≡So nR
2 Associativité de la jointure :
(R on S) o nT ≡So n (R o nT)
3 Regroupement des sélections :
σA=0 a0 (σB=0 b 0 R) ≡ σA=0 a0 ∧B=0 b 0 R
4 Commutativité de la sélection et de la projection :
πA1 ...An (σAi =0 a0 R) ≡ σAi =0 a0 (πA1 ...An R), i∈1, ..., n
5 Commutativité de la sélection et de la jointure :
σA=0 a0 (R o n S) ≡ σA=0 a0 (R) o nS
6 Distributivité de la sélection sur l’union :
σA=0 a0 (R ∪ S) ≡ σA=0 a0 R ∪ σA=0 a0 S
7 Commutativité de la projection et de la jointure :
nAi =Bj S) ≡ πA1 ...1n R o
πA1 ...An B1 ...Bm (R o nAi =Bj πB1 ...Bm S
i∈1..n, j∈1..m
8 Distributivité de la projection sur l’union : 112 / 177
113 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Exemple 2
SELECT P.nom
FROM Cours C, Auditeur A, Personne P
WHERE C.CODE UE = A.CODE
AND Responsable = ’Nicolas Travers’
AND Cursus = ’Base de Données’
AND A.CODE AUD = P.CODE
114 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Exemple 2 équivalent
πnom (
πCODE (σresponsable=0 NT 0 (Cours))
nCODE UE =CODE (
o
πCODE AUD,CODE UE (Auditeur )
o
nCODE AUD=CODE
πCODE ,nom (σcursus=0 BD 0 (Personne))
)
)
115 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
116 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
117 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
PEP : Caractéristiques
Représentation arborescente
Feuilles : Accès aux données
Noeuds internes : Opérateur physique
Arc (bas en haut) : Flot de données, consommé par
l’opérateur du dessus
118 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
119 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
120 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
EXPLAIN : Exemple
Id Opération Name
0 SELECT STATEMENT
1 TABLE ACCESS BY ROWIDS Cours
2* INDEX RANGE SCAN Cours NB AUDITEUR IDX
121 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
122 / 177
23. Identifiant pour retrouver le plan
24. Table par défaut : Nicolas
PLANTravers
TABLE
c Ecole Centrale Paris - IS3012AB
123 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Accès à un Index
124 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
125 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
126 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Tri vs Hachage
127 / 177
25. avec ou sans Group By
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Jointures
Opération Description
NESTED LOOPS NLJ/NLJI, Boucles imbriquées
MERGE JOIN SMJ, Etape de fusion des tables
HASH JOIN HashJoin, construction des partitions, puis
suite de NLJ
AND-EQUAL Intersection de deux listes de ROWIDs pour
une jointure entre deux indexes
Options : OUTER, ANTI, SEMI, CARTESIAN.
128 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Bonus (1/3)
Opération Description
CONNECT BY Auto-jointure hiérarchique utilisant le
résultat de l’étape précédente
CONCATENATION Union multiples de Result Sets (cf UNION)
COUNT Compte le nombre tuples d’un résultat
FILTER Opération de sélection
FIRST ROW Premier tuple sélectionné par la requête
FOR UPDATE Blocage des tuples retournés pour des MAJ
ultérieures
129 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Bonus (2/3)
Opération Description
VIEW Accès à une vue, ou création d’une table
temporaire
UNION Union de deux Result Set, sans doublons
UNION-ALL Union de deux Result Set, avec doublons
INTERSECTION Intersection de deux Result Set, contenant
les mêmes valeurs
MINUS Les tuples du premier Result Set sont re-
tournés, sauf ceux présents dans le second
130 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Bonus (3/3)
Opération Description
SEQUENCE Oracle Sequence Generator
(auto increment d’ID)
REMOTE Accès à une base de données distante
INLIST OPERATOR Un seul opérateur à la fois. Pas de pipeline
131 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Lecture de EXPLAIN
132 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Id Opération Name
0 SELECT STATEMENT
1* TABLE ACCESS FULL Auditeurs
133 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Id Opération Name
0 SELECT STATEMENT
1 TABLE ACCESS BY ROWIDS Cours
2* INDEX UNIQUE SCAN Cours Code IDX
134 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Id Opération Name
0 SELECT STATEMENT
1 TABLE ACCESS BY ROWIDS Cours
2* INDEX RANGE SCAN Cours NB AUDITEUR IDX
1
Statistiques : |Cours| = 20, ||Cours|| = 600, |I| = 2 (dense), Sel = 30
135 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Id Opération Name
0 SELECT STATEMENT
1 PARTITION HASH SINGLE
2* TABLE ACCESS FULL Cours
136 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Id Opération Name
0 SELECT STATEMENT
1 TABLE ACCESS BY INDEX ROWID Auditeurs
2 BITMAP CONVERSION TO ROWIDS
3* BITMAP INDEX SINGLE VALUE Auditeurs Annee BITMAP
137 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Id Opération Name
0 SELECT STATEMENT
1* NESTED LOOPS
2 TABLE ACCESS FULL Cours
3 TABLE ACCESS FULL Auditeurs
138 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Id Opération Name
0 SELECT STATEMENT
1* NESTED LOOPS
2 TABLE ACCESS BY INDEX ROWID Cours
3* INDEX RANGE SCAN Cours Responsable IDX
4 TABLE ACCESS FULL Auditeurs
139 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Id Opération Name
0 SELECT STATEMENT
1 NESTED LOOPS
2 TABLE ACCESS BY INDEX ROWID Cours
3* INDEX RANGE SCAN Cours Responsable IDX
4 TABLE ACCESS BY INDEX ROWID Auditeurs
5* INDEX RANGE SCAN Auditeurs CODEUE IDX
140 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Id Opération Name
0 SELECT STATEMENT
1* MERGE JOIN
2 SORT JOIN
3 TABLE ACCESS BY INDEX ROWID Cours
4* INDEX RANGE SCAN Cours Responsable IDX
5 SORT JOIN
6 TABLE ACCESS FULL Auditeurs
141 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Id Opération Name
0 SELECT STATEMENT
1* HASH JOIN
2 TABLE ACCESS BY INDEX ROWID Cours
3* INDEX RANGE SCAN Cours Responsable IDX
4 TABLE ACCESS FULL Auditeurs
142 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Id Opération Name
0 SELECT STATEMENT
1 SORT AGGREGATE
2 BITMAP CONVERSION COUNT
3* BITMAP INDEX SINGLE VALUE Auditeurs Annee
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
EXPLAIN : Statistiques
144 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Exemple de statistiques
Id Opération Name
0 SELECT STATEMENT
1* NESTED LOOPS
2 TABLE ACCESS FULL Cours
3 TABLE ACCESS FULL Auditeurs
Statistics
0 recursive calls
100 db block gets
2000 consistent gets
300 physical reads
145 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Différentes Statistiques
Accès mémoire :
consistent gets : Nb d’accès à une donnée consistente en
RAM (non modifiée)
db block gets : Nb d’accès à une donnée en RAM
Accès physiques :
physical reads : Nb total de pages lues sur le disque
recursive calls : Nb d’appels à un sous-plan (requête
imbriquée)
redo size : Taille du fichier de log produit (update)
sorts (disk) : Nb d’opérations de tri avec au moins une
écriture
sorts (memory) : Nb d’opérations de tri en mémoire
physical reads
⇒ Taux d’efficacité du cache : 1 − consistent gets + db block gets
146 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
147 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
L’optimiseur a un PEL
Choix des meilleurs opérateurs
⇒ Besoin de statistiques
148 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
149 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Jeu de données
Table Cours
5000 n-uplets
60 pages
Index BTree sur Responsable (Hauteur : 3, Ordre : 56)
Index BTree sur CODE (Hauteur : 2, Ordre : 149)
500 professeurs
Table Auditeurs
100 000 n-uplets
300 pages
Index BTree sur CODE UE (Hauteur : 3, Ordre : 149, φcode = 10000)
Index Bitmap sur Année (2 pages par vecteur)
10 000 auditeurs
10 années différentes (Histogramme)
150 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
SELECT COUNT(*)
FROM Cours C, Auditeurs A
WHERE C.CODE UE = A.CODE
AND Responsable = ’Nicolas Travers’
AND Annee = 2014 ;
151 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Id Opération Name
0 SELECT STATEMENT
1* NESTED LOOPS
2* TABLE ACCESS FULL Cours
3* TABLE ACCESS FULL Auditeurs
152 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Id Opération Name
0 SELECT STATEMENT
1* NESTED LOOPS
2* TABLE ACCESS FULL Auditeurs
3* TABLE ACCESS FULL Cours
153 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Remarques
154 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Id Opération Name
0 SELECT STATEMENT
1* NESTED LOOPS
2 TABLE ACCESS BY INDEX ROWID Cours
3* INDEX RANGE SCAN Cours Responsable IDX
4* TABLE ACCESS FULL Auditeurs
155 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Id Opération Name
0 SELECT STATEMENT
1 NESTED LOOPS
2 TABLE ACCESS BY INDEX ROWID Cours
3* INDEX RANGE SCAN Cours Responsable IDX
4* TABLE ACCESS BY INDEX ROWID Auditeurs
5* INDEX RANGE SCAN Auditeurs CODE UE
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
157 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Id Opération Name
0 SELECT STATEMENT
1* MERGE JOIN
2 SORT JOIN
3 TABLE ACCESS BY INDEX ROWID Cours
4* INDEX RANGE SCAN Cours Responsable IDX
5 SORT JOIN
6* TABLE ACCESS FULL Auditeurs
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
159 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Id Opération Name
0 SELECT STATEMENT
1* HASH JOIN
2 TABLE ACCESS BY INDEX ROWID Cours
3* INDEX RANGE SCAN Cours Responsable IDX
4* TABLE ACCESS FULL Auditeurs
160 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Composition d’index
161 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
AND-EQUAL : Remarques
163 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
165 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
166 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Pipeline
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Principe
Durant l’évaluation de o1
A chaque n-uplet de sortie de o1
Donné directement en entrée de o2
Production de o1 consommé par o2
Création d’une grande séquence d’opérateur en même temps
(le plus possible)
168 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Illustration
169 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Illustration
169 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Illustration
169 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Illustration
169 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Avantages
170 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Id Opération Name
0 SELECT STATEMENT
1 NESTED LOOPS
2 NESTED LOOPS
3 TABLE ACCESS BY INDEX ROWID Cours
4* INDEX RANGE SCAN Cours Responsable IDX
5* TABLE ACCESS BY INDEX ROWID Auditeurs
6* INDEX RANGE SCAN Auditeurs CODE UE
7 TABLE ACCESS BY INDEX ROWID Personne
8* INDEX UNIQUE SCAN Personne ID
171 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Illustration
172 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Illustration
172 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Illustration
172 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Illustration
172 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Illustration
172 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Itérateurs
173 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Création de types
174 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
175 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
SELECT *
FROM TABLE(pipelined function(’NFE106’, 2014)) ;
176 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB
Opérations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Conclusion
Pipeline
1 Permet d’optimiser le résultat du premier tuple
2 Réduit le nombre d’écriture intermédiaire
3 Possibilité de créer des résultats localement optimisés
(Pipe-lined Functions)
177 / 177
Nicolas Travers
c Ecole Centrale Paris - IS3012AB