Op´ erations Plans Bases de Donn´ ees Avanc´ ees IS3012AB Optimisation de Bases de Donn´ ees Nicolas Travers D´ epartement Informatique - Equipe ISI Laboratoire CEDRIC - Equipe Vertigo 1 / 177 Nicolas Travers c Ecole Centrale Paris - IS3012AB Op´ erations Plans Plan 1 Optimisation : Op´ erations 2 Optimisation : Plans d’ex´ ecutions 2 / 177 Nicolas Travers c Ecole Centrale Paris - IS3012AB
107
Embed
Optimisation de Bases de Donn´ees 1/177 Nicolas …deptinfo.cnam.fr/~traversn/teaching/ECP/BDA_cours_handout.pdf · Op´erationsPlans Bases de Donn´ees Avanc´ees IS3012AB Optimisation
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Operations Plans
Bases de Donnees AvanceesIS3012AB
Optimisation de Bases de Donnees
Nicolas Travers
Departement Informatique - Equipe ISILaboratoire CEDRIC - Equipe Vertigo
Operations Plans Intro Indexes Operations Sel Sort Proj Join
1 Optimisation : OperationsPrincipes de l’OptimisationIndexesAlgorithmes des OperateursAlgorithmes de SelectionAlgorithme de triAlgorithmes de projectionAlgorithmes de jointure
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Page dique
Une page 1 contient :En-tete 2 :
Type de donnees (Relation, index, cluster. . . )Schema de donnees (attributs, null, blob. . . )Pointeurs sur places vides, page suivante et precedente
Place vide pour mises a jourPCTFREE 3 / PCTUSED
Les donneesTuples en entierEn-tete de tuple 4 (identification, valeurs NULL, verrous)A chaque attribut s’associe sa taille 5
1. Par defaut 8 ko : 8192 o2. Entre 100 et 200 octets. Dans ce cours, nous utiliserons 192 o3. Par defaut 10%4. Variable, mais en moyenne 3 octets5. Taille de colonne entre 1 et 3 octets. En moyenne 1 octet
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Types de donnees
Types numeriquesType Taille Interval de valeursTINYINT 1 octet 0 a 255 ou -128 a 127SMALLINT 2 octets -32768 a 32767 ou 0 a 65535MEDIUMINT 3 octets -8388608 a 8388607 ou 0 a 16777215INT, INTEGER 4 octets -2147483648 a 2147483647 ou 0 a 4294967295BIGINT 8 octets ∼ 1019
FLOAT(p) 4 octets if 0≤p≤24,8 octets if 25≤p≤53
nombre de decimales
FLOAT 8 octets Par defaut, 53 decimalesDOUBLE(p), REAL 8 octetsDECIMAL(M,D), NUM(M,D) VariableBIT(M) ∼ (M + 7)/8 octets
Types textuelType TailleCHAR(M) M octets ou ou M x 2 octets, 0≤M≤255BINARY(M) M octets, 0≤M≤255VARCHAR(M) M + 1o (0-255 o), M + 2o (> 255 o)BLOB, TEXT L + 2 octets, where L≤215ENUM(’v1’,’v2’,...) 1o (255 valeurs), 2o (65 535 valeurs)SET(’v1’,’v2’,...) 1, 2, 3, 4, or 8 octets (64 valeurs maximum)
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Exemple simple d’acces
πDate(σIntitule=′Introduction′(Cours))SELECT date FROM Cours WHERE Intitule=’Introduction’
Operateur de selection necessaire.Si pas d’index sur l’attribut Intitule :Parcours chaque page (physique) de la relation Cours :TABLE ACCESS FULLSi le tuple contient ’Introduction’, le tuple est projete
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Notations
Tables :|R| : Nb de pages de la relation R|R′| : Nb de pages de la relation R apres modification||R|| : Nb de n-uplets de la relation R||R′|| : Nb de n-uplets de la relation R apres selection
Index :|I| : Nb de pages a lire pour une tranversee d’index
(ie. hauteur de l’arbre)k : Ordre du l’arbre Bφ : clustering factor (cf. indexation)Sel : Selectivite d’un attribut∆ : Nb de feuilles de I selectionnees
Operations Plans Intro Indexes Operations Sel Sort Proj Join
1 Optimisation : OperationsPrincipes de l’OptimisationIndexesAlgorithmes des OperateursAlgorithmes de SelectionAlgorithme de triAlgorithmes de projectionAlgorithmes de jointure
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Principe d’indexation : Index
Un index est stocke dans un autre fichier IBesoin d’une cle d’acces K : CODEBesoin d’un pointeur sur les donnees (ROWID) : @
Caracteristiques :I ne contient pas les donneesA chaque K correspond un ou plusieurs ROWIDS @I est ordonne sur les valeurs de KEntree de I : (K, @)Si I plus gros qu’une page, on indexe de la meme manierechaque page de I
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Acces aux donnees
Deux etapes pour faire une recherche :1 INDEX RANGE SCAN : Parcours de l’index
Donne l’adresse d’une page POn traverse l’arbre jusqu’aux feuilles de IComplexite : hauteur de l’arbre (Nb de pages)Retour : liste de ROWIDS correspondant
2 TABLE ACCESS BY ROWIDS : Acces direct aux donneesOuverture de la page @Parcours sequentiel de la page pour retrouver la(les) valeur(s)de K
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Index dense versus Index non dense
Index non dense 6 : Une page = un pointeurValeurs ordonnees physiquement sur la cle KUne cle de l’index = premier tuple de chaque pageTres peu d’accesPeu de place : ||K|| = |R|Un seul ordonnancement = un seul index non dense
Index dense : Une cle = un pointeurROWID des feuilles tres heterogenesVolumineux : ||K|| = ||R||Temps de parcours lent pour des valeurs multivaluees
⇒ Quel est le type de l’index precedent ?⇒ Comment inserer un nouveau tuple dans l’index non dense ?
6. Organization Index (Oracle), Clustered index (SQLServer/DB2)21 / 177
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Arbre B+
Balanced Tree : Arbre equilibreImplante dans tous les SGBD relationnels (index par defaut)Les feuilles de l’arbre contiennent les pointeursPrincipe des Arbres Binaires de Recherche
⇒ Optimise les requetes d’egalite(avec peu de valeurs, et les inequations)
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Arbre B+ : caracteristiques
Noeud : cles + ROWIDNoeuds intermediaires : ROWID sur d’autres noeudsNoeuds feuilles : ROWID sur tuples du fichier indexeTaille d’un noeud : 2 * k valeurs (k est l’ordre de l’arbre)Quel est l’ordre de l’arbre de l’exemple ?
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Arbre B+ : Recherche
Recherche recursive de K a partir de la racineSoit C1 a Cn les valeurs des cles de la page
1 Si κ ≤ C1, recherche sur le noeud reference P12 Si κ > Cn, recherche sur le noeud reference Pn+13 Si Ci < κ ≤ Ci+1, recherche sur le noeud reference Pi+1
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Arbre B+ : Insertion
Insertion de (κ,@), dans Arbre B+ d’ordre k :1 Recherche de la feuille correspondant a K2 Insertion ordonnee.
Si Nb de cles de la page p = 2 * k + 1 :1 Allocation d’une nouvelle page p′2 Les k + 1 premiers articles sont mis dans p3 Les k derniers articles sont mis dans p′4 La cle k + 1 est inseree au pere de p.
Pointeur gauche sur p, pointeur droit sur p′.5 Si pere de p deborde, recommencer l’etape insertion sur pere
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Arbre B+ : Ordre et Hauteur
L’ordre k : depend de la taille du noeud (nb de cles)K : taille de la cle a indexerCase : entete + entete d’attribut + K + ROWID 7
Nb de cases par noeud :⌊|DataBlock|
3+x+|cle|+10
⌋Ordre k : NbCases
2Hauteur de l’index :
Depend du nombre de cles : ||K||Division de l’ensemble par k a chaque niveauDivision recursive = logarithmeI = logordre(||K||)Index dense 8 : ||K|| ≤ ||R||Index non-dense : ||K|| = |R|
7. ROWID = 10 octets sous Oracle8. Les valeurs nulles ne sont pas indexees
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Creation d’un BTree
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/
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Bitmap : Motivation
On cherche a optimiser les requetes :SELECT count(*) FROM Cours WHERE responsable =’Nicolas Travers’ ;Faible cardinalite de la valeur recherchee (compare au nombrede n-uplets)
Arbre B+ :Beaucoup de n-uplets ayant meme valeurFeuilles de l’arbre tres grandeRisque d’acces aux donnees de chaque pointeur !
Table de hachage :Beaucoup de collisions dans les partitions
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Bitmap : Structure
Bitmap sur l’attribut responsable||R|| : Nombre de tuplescardresp : Cardinalite de l’attribut Responsable (nb valeurdistinctes)
Creation de cardresp vecteurs bitmap de ||R|| bitsSi le ieme tuple a pour valeur ’Nicolas Travers’, alors le ieme bitdu vecteur ’Nicolas Travers’ a pour valeur 1Le ieme bit des autres vecteurs a pour valeur 0
Operations Plans Intro Indexes Operations Sel Sort Proj Join
1 Optimisation : OperationsPrincipes de l’OptimisationIndexesAlgorithmes des OperateursAlgorithmes de SelectionAlgorithme de triAlgorithmes de projectionAlgorithmes de jointure
Operations Plans Intro Indexes Operations Sel Sort Proj Join
1 Optimisation : OperationsPrincipes de l’OptimisationIndexesAlgorithmes des OperateursAlgorithmes de SelectionAlgorithme de triAlgorithmes de projectionAlgorithmes de jointure
Operations Plans Intro Indexes Operations Sel Sort Proj Join
TABLE ACCESS FULL : σProf =′MichelCrucianu′(Cours))
Page CODE Intitule ResponsableP1 NFE106 Ingenierie de Base de Donnees Nicolas Travers
NFP107 Initiation a la Base de Donnees Michel CrucianuNFE204 Base de Donnees Avancees 1 Michel Scholl
P2 NFE205 Base de Donnees Avancees 2 Michel CrucianuNSY122 Analyse des images et des sons numeriques Valerie Gouet-BrunetNFA011 Approfondissement bases de donnees Elisabeth Metais
P3 NFE102 Infrastructures Technologiques pour... Francois-Yves VilleminNSY218 Vision par Ordinateur 2D Valerie Gouet-BrunetNSY219 Vision par Ordinateur 3D Valerie Gouet-Brunet
Tampon de sortieCODE Intitule ResponsableNFP107 Initiation a la Base de Donnees Michel Crucianu
Operations Plans Intro Indexes Operations Sel Sort Proj Join
TABLE ACCESS FULL : σProf =′MichelCrucianu′(Cours))
Page CODE Intitule ResponsableP1 NFE106 Ingenierie de Base de Donnees Nicolas Travers
NFP107 Initiation a la Base de Donnees Michel CrucianuNFE204 Base de Donnees Avancees 1 Michel Scholl
P2 NFE205 Base de Donnees Avancees 2 Michel CrucianuNSY122 Analyse des images et des sons numeriques Valerie Gouet-BrunetNFA011 Approfondissement bases de donnees Elisabeth Metais
P3 NFE102 Infrastructures Technologiques pour... Francois-Yves VilleminNSY218 Vision par Ordinateur 2D Valerie Gouet-BrunetNSY219 Vision par Ordinateur 3D Valerie Gouet-Brunet
Tampon de sortieCODE Intitule ResponsableNFP107 Initiation a la Base de Donnees Michel CrucianuNFE205 Base de Donnees Avancees 2 Michel Crucianu
Operations Plans Intro Indexes Operations Sel Sort Proj Join
TABLE ACCESS FULL : σProf =′MichelCrucianu′(Cours))
Page CODE Intitule ResponsableP1 NFE106 Ingenierie de Base de Donnees Nicolas Travers
NFP107 Initiation a la Base de Donnees Michel CrucianuNFE204 Base de Donnees Avancees 1 Michel Scholl
P2 NFE205 Base de Donnees Avancees 2 Michel CrucianuNSY122 Analyse des images et des sons numeriques Valerie Gouet-BrunetNFA011 Approfondissement bases de donnees Elisabeth Metais
P3 NFE102 Infrastructures Technologiques pour... Francois-Yves VilleminNSY218 Vision par Ordinateur 2D Valerie Gouet-BrunetNSY219 Vision par Ordinateur 3D Valerie Gouet-Brunet
Tampon de sortieCODE Intitule ResponsableNFP107 Initiation a la Base de Donnees Michel CrucianuNFE205 Base de Donnees Avancees 2 Michel Crucianu
Operations Plans Intro Indexes Operations Sel Sort Proj Join
INDEX RANGE SCANParcours de l’index
1 Ordre du BTreeDepend de la taille de la cleUn noeud = une page (8ko + metadata + PCTFREE)Contient 2× k casesUne case : Cle + ROWID (|cle| + 10o)ordre 11 : k =
⌊(8192−192)×90%
3+x+|cle|+10
⌋÷ 2
2 Hauteur du BTreeDivision de l’espace par l’ordre a chaque niveau
Operations Plans Intro Indexes Operations Sel Sort Proj Join
TABLE ACCESS BY INDEX ROWID
Acces aux donnees via ROWIDS1 ROWID = 1 pageOptimisation :
Si 2 ROWIDS sur une meme page = 1 accesTri des ROWIDS par page, puis accesclustering factor 14 : φ
Degre de distribution aleatoire des donnees dans R|R| ≤ φ ≤ ||R||φ = |R| (Index non-dense)φ = ||R|| (Tres aleatoire/disperse) - valeur par defautPossibilite de trier les donnees physiquement
⇒ Nombre de pages accedees : ||R|| × Sel × φ||R|| = Sel × φ
14. facteur de foisonnement / regroupement des ROWIDS par page54 / 177
Operations Plans Intro Indexes Operations Sel Sort Proj Join
PARTITION HASH SINGLE : Selection par Hachage
Appliquer si index Hash H sur R(a)
P partitionsDonnees placees sur les partitions en fonction de HHacher la cle ′x ′ : H(′x ′) = v (1 ≤ v ≤ P)Recherche :Pour chaque page p de la partition R(v)
Operations Plans Intro Indexes Operations Sel Sort Proj Join
1 Optimisation : OperationsPrincipes de l’OptimisationIndexesAlgorithmes des OperateursAlgorithmes de SelectionAlgorithme de triAlgorithmes de projectionAlgorithmes de jointure
Operations Plans Intro Indexes Operations Sel Sort Proj Join
SORT : Tri physique
Necessaire pour :Ordonner le resultat (Order By)Agregation (Group By / Count,Sum,Avg . . . )Eliminer les doublons (Distinct)Jointure par fusion (Sort Merge Join)
Operations Plans Intro Indexes Operations Sel Sort Proj Join
SORT : Deux phases
|M| : Tampons en memoire|R′| : Nombre de pages de R en entree du tri 16
Si |M| < |R′|1 Tri :
On decoupe R′ en blocs de taille |M|On trie chaque bloc en memoireOn ecrit les blocs triesOn a |R
′||M| partitions triees
2 Fusion :On fusionne les partitions, |M| − 1 blocs tries en meme tempsRecursivement, on obtient au final une seule partitionCette phase est la plus chere
16. Depend de l’acces aux donnees (Full, Index, Hachage)Calcul de pages normales projetees avec PCTFREE de 0%
Operations Plans Intro Indexes Operations Sel Sort Proj Join
SORT : Fusion de deux listes (2)
Listes stockees sur plusieurs pagesAlgorithme identique, mais lorsque la page est vide, on passea la suivante.Exercice : Fusion de listes sur differentes pages
Operations Plans Intro Indexes Operations Sel Sort Proj Join
1 Optimisation : OperationsPrincipes de l’OptimisationIndexesAlgorithmes des OperateursAlgorithmes de SelectionAlgorithme de triAlgorithmes de projectionAlgorithmes de jointure
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Projection
Integre dans plusieurs operateurs :Selection sequentielle : TABLE ACCESS FULLSelection avec index : TABLE ACCESS BY ROWIDSSelection par tri : SORTJointures ne tenant pas en memoire : NESTED LOOPSJointures par hachage : HASH JOIN
Operations Plans Intro Indexes Operations Sel Sort Proj Join
HASH AGGREGATE : Exercice |M| = 4
Compter l’occurence de chaque lettreProjeter sur la lettreTrouver la partitionIncrementer son occurrence
Capacite apres projection : 1 page ⇒ 4 lettres+incrementFonction de hachage : indice de la lettre % 3
h(l) = 0→ c, f, i, l, o, r, u, xh(l) = 1→ a, d, g, j, m, p, s, v, yh(l) = 2→ b, e, h, k, n, q, t, w, z
Une fois les partitions creees, parcours sequentiel avec sommedes “count” locaux
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Operations Plans Intro Indexes Operations Sel Sort Proj Join
HASH AGGREGATE : Exercice |M| = 4
Fonction de hachage : indice de la lettre % 3h(l) = 0→ c, f, i, l, o, r, u, xh(l) = 1→ a, d, g, j, m, p, s, v, yh(l) = 2→ b, e, h, k, n, q, t, w, z
Une fois les partitions creees, parcours sequentiel avec sommedes “count” locaux
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Table en memoire :L 2 A 2 B 2C 2 G 1 H 2X 2 D 1 E 2F 1 Y 1 Z 1
Operations Plans Intro Indexes Operations Sel Sort Proj Join
HASH AGGREGATE : Exercice |M| = 4
Fonction de hachage : indice de la lettre % 3h(l) = 0→ c, f, i, l, o, r, u, xh(l) = 1→ a, d, g, j, m, p, s, v, yh(l) = 2→ b, e, h, k, n, q, t, w, z
Une fois les partitions creees, parcours sequentiel avec sommedes “count” locaux
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Table en memoire :L 2 A 2 K 1C 3 G 2 B 1X 2 D 1F 1 Y 1
Operations Plans Intro Indexes Operations Sel Sort Proj Join
HASH AGGREGATE : Exercice |M| = 4
Fonction de hachage : indice de la lettre % 3h(l) = 0→ c, f, i, l, o, r, u, xh(l) = 1→ a, d, g, j, m, p, s, v, yh(l) = 2→ b, e, h, k, n, q, t, w, z
Une fois les partitions creees, parcours sequentiel avec sommedes “count” locaux
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Operations Plans Intro Indexes Operations Sel Sort Proj Join
HASH AGGREGATE : Exercice |M| = 4
Fonction de hachage : indice de la lettre % 3h(l) = 0→ c, f, i, l, o, r, u, xh(l) = 1→ a, d, g, j, m, p, s, v, yh(l) = 2→ b, e, h, k, n, q, t, w, z
Une fois les partitions creees, parcours sequentiel avec sommedes “count” locaux
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Table en memoire :U 2 P 1 K 1
B 1N 1Z 1
Pages disques :L 2 A 2 B 2C 3 G 2 H 2X 2 D 1 E 2F 1 Y 1 Z 1
Operations Plans Intro Indexes Operations Sel Sort Proj Join
HASH AGGREGATE : Exercice |M| = 4
Fonction de hachage : indice de la lettre % 3h(l) = 0→ c, f, i, l, o, r, u, xh(l) = 1→ a, d, g, j, m, p, s, v, yh(l) = 2→ b, e, h, k, n, q, t, w, z
Une fois les partitions creees, parcours sequentiel avec sommedes “count” locaux
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Table en memoire :U 2 P 1 H 1I 1 A 2 Z 1L 1 S 1X 1
Pages disques :L 2 A 2 B 2C 3 G 2 H 2X 2 D 1 E 2F 1 Y 1 Z 1
Operations Plans Intro Indexes Operations Sel Sort Proj Join
HASH AGGREGATE : Exercice |M| = 4
Une fois les partitions creees, parcours sequentiel avec sommedes “count” locaux
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Table en memoire :
Pages disques :L 2 A 2 B 2C 3 G 2 H 2X 2 D 1 E 2F 1 Y 1 Z 1U 2 P 1 K 1I 1 A 2 B 1L 1 S 1 N 1X 1 Z 1
Operations Plans Intro Indexes Operations Sel Sort Proj Join
SORT UNIQUE : Tri de donnees avec DISTINCT
Projection, Tri et suppression des doublonsSELECT DISTINCT Lettre FROM TABLEX GROUP BYLettre
|M| Tampons en memoire centraleAlgo en 2 etapes :
1 Lecture page par page de RProjection des valeurs dans |M| − 1 pagesElimination de doublons et tri sur |M| − 1Quand |M| − 1 plein, ecrire sur le disque (une liste pour lafusion)
2 Tri fusion des blocs projetesElimination de doublons lors du parcours
Operations Plans Intro Indexes Operations Sel Sort Proj Join
SORT UNIQUE : Exercice |M| = 3
On souhaite projeter et eliminer les doublons de la secondecolonne de la table (lettre)Capacite apres projection : 1 page ⇒ 4 lettres
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Operations Plans Intro Indexes Operations Sel Sort Proj Join
SORT UNIQUE : Exercice |M| = 3
On souhaite projeter et eliminer les doublons de la secondecolonne de la table (lettre)Capacite apres projection : 1 page ⇒ 4 lettres
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Operations Plans Intro Indexes Operations Sel Sort Proj Join
SORT UNIQUE : Exercice |M| = 3
On souhaite projeter et eliminer les doublons de la secondecolonne de la table (lettre)Capacite apres projection : 1 page ⇒ 4 lettres
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Operations Plans Intro Indexes Operations Sel Sort Proj Join
SORT UNIQUE : Exercice |M| = 3
On souhaite projeter et eliminer les doublons de la secondecolonne de la table (lettre)Capacite apres projection : 1 page ⇒ 4 lettres
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Operations Plans Intro Indexes Operations Sel Sort Proj Join
SORT UNIQUE : Exercice |M| = 3
On souhaite projeter et eliminer les doublons de la secondecolonne de la table (lettre)Capacite apres projection : 1 page ⇒ 4 lettres
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Table en memoire :
Stockage temporaire1) Phase de Tri
A B C E F H L X B D G H L X Y Z B C G K N P U Z A H I L S X Z
Operations Plans Intro Indexes Operations Sel Sort Proj Join
SORT UNIQUE : Exercice |M| = 3
On souhaite projeter et eliminer les doublons de la secondecolonne de la table (lettre)Capacite apres projection : 1 page ⇒ 4 lettres
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Table en memoire :
Stockage temporaire1) Phase de Tri
A B C E F H L X B D G H L X Y Z B C G K N P U Z A H I L S X Z
Operations Plans Intro Indexes Operations Sel Sort Proj Join
SORT UNIQUE : Exercice |M| = 3
On souhaite projeter et eliminer les doublons de la secondecolonne de la table (lettre)Capacite apres projection : 1 page ⇒ 4 lettres
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Table en memoire :
Stockage temporaire1) Phase de Tri
A B C E F H L X B D G H L X Y Z B C G K N P U Z A H I L S X Z
2) Phase de FusionA B C D E F G H L X Y Z A B C G H I K L N P S U X Z
Operations Plans Intro Indexes Operations Sel Sort Proj Join
SORT UNIQUE : Exercice |M| = 3
On souhaite projeter et eliminer les doublons de la secondecolonne de la table (lettre)Capacite apres projection : 1 page ⇒ 4 lettres
1 A 5 4 C 1 7 A 1 10 C 1 13 D 0 16 Z 4 19 L 1 22 B 6 25 U 3 28 Z 7 31 A 6 34 A 32 B 7 5 H 4 8 E 3 11 F 4 14 X 8 17 H 2 20 K 0 23 C 2 26 N 4 29 H 0 32 L 9 35 X 03 L 3 6 E 3 9 X 5 12 G 6 15 Y 0 18 B 6 21 G 3 24 P 6 27 U 6 30 I 5 33 S 4 36 Z 1
Table en memoire :
Stockage temporaire1) Phase de Tri
A B C E F H L X B D G H L X Y Z B C G K N P U Z A H I L S X Z
2) Phase de FusionA B C D E F G H L X Y Z A B C G H I K L N P S U X Z
2) Phase de FusionA B C D E F G H I K L N P S U X Y Z
Operations Plans Intro Indexes Operations Sel Sort Proj Join
1 Optimisation : OperationsPrincipes de l’OptimisationIndexesAlgorithmes des OperateursAlgorithmes de SelectionAlgorithme de triAlgorithmes de projectionAlgorithmes de jointure
Operations Plans Intro Indexes Operations Sel Sort Proj Join
Jointures
Plusieurs algorithmes de jointuresPresentation d’algorithmes d’egaliteCertains ne marchent pas en inegaliteTables R et SJointure naturelle sur l’attribut a|M| pages pour l’operation de jointure
Operations Plans Intro Indexes Operations Sel Sort Proj Join
MERGE JOIN + SORT JOIN : Jointure par Tri-Fusion
SORT JOIN : Projection et Tri de RSORT JOIN : Projection et Tri de SMERGE JOIN : Fusion des deux listes de valeursQue doit-on projeter pour l’expression suivante :πR.a,S.b(R onR.x=S.x S)
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Introduction
SQL est declaratifOn dit ce que l’on veut obtenirOn ne dit pas comment l’obtenir
Optimiseur doit :Comprendre la requete. Traduction en Plan d’ExecutionLogique 21 (PEL)Choisir le meilleur Plan d’Execution Physique 22 (PEP)Executer le PEP
21. Operateurs de l’algebre relationnelle22. Operateurs implementes dans le SGBD
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Heuristique pour le PEL
1 Remonter les selections le plus tot possible (regles 4 & 5)2 Remonter les projections le plus haut possible (regles 4, 7 & 8)3 Decomposer les selections en une composition. (regle 3)⇒ πintitule(
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
EXPLAIN : Outils d’affichage de PEP
Outils de representation de PEP sous Oracle et MySQLRepresentation arborescente (tabulations)Estimation du cout d’evaluationInsertion de statistiques d’evaluation
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Acces a un Index Bitmap
Operation Option DescriptionBITMAP INDEX SINGLE
VALUEAcces a l’index bitmap, retourne lesnumeros des tuples
CONVERSION COUNT Compte le nombre de bit a 1CONVERSION TOROWIDS
Converti les numeros de tuples enROWIDs
AND ET logique entre deux listes bitmapOR OU logique entre deux listes bitmapMINUS AND NOT logiqueINDEX RANGE SCAN Acces a un ensemble de listesMERGE Fusionne les listes retournees par un
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Jointures
Operation DescriptionNESTED LOOPS NLJ/NLJI, Boucles imbriqueesMERGE JOIN SMJ , Etape de fusion des tablesHASH JOIN HashJoin, construction des partitions, puis
suite de NLJAND-EQUAL Intersection de deux listes de ROWIDs pour
une jointure entre deux indexesOptions : OUTER, ANTI, SEMI, CARTESIAN.
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Bonus (1/3)
Operation DescriptionCONNECT BY Auto-jointure hierarchique utilisant le
resultat de l’etape precedenteCONCATENATION Union multiples de Result Sets (cf UNION)COUNT Compte le nombre tuples d’un resultatFILTER Operation de selectionFIRST ROW Premier tuple selectionne par la requeteFOR UPDATE Blocage des tuples retournes pour des MAJ
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Bonus (2/3)
Operation DescriptionVIEW Acces a une vue, ou creation d’une table
temporaireUNION Union de deux Result Set, sans doublonsUNION-ALL Union de deux Result Set, avec doublonsINTERSECTION Intersection de deux Result Set, contenant
les memes valeursMINUS Les tuples du premier Result Set sont re-
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Lecture de EXPLAIN
Structure arborescente (indentation)L’operateur le moins indente est le resultatLe plus indente est l’acces aux donneesSi deux indentation de meme niveau, le premier est executed’abordExercice sur les plans suivants :
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Exemples : Bitmap + Conversion
Id Operation Name0 SELECT STATEMENT1 TABLE ACCESS BY INDEX ROWID Auditeurs2 BITMAP CONVERSION TO ROWIDS3 * BITMAP INDEX SINGLE VALUE Auditeurs Annee BITMAP
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Exemples : Boucle imbriquee et acces via index
Id Operation Name0 SELECT STATEMENT1 * NESTED LOOPS2 TABLE ACCESS BY INDEX ROWID Cours3 * INDEX RANGE SCAN Cours Responsable IDX4 TABLE ACCESS FULL Auditeurs
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Exemples : Boucle imbriquee avec index
Id Operation Name0 SELECT STATEMENT1 NESTED LOOPS2 TABLE ACCESS BY INDEX ROWID Cours3 * INDEX RANGE SCAN Cours Responsable IDX4 TABLE ACCESS BY INDEX ROWID Auditeurs5 * INDEX RANGE SCAN Auditeurs CODEUE IDX
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Exemples : Jointure par Tri-Fusion
Id Operation Name0 SELECT STATEMENT1 * MERGE JOIN2 SORT JOIN3 TABLE ACCESS BY INDEX ROWID Cours4 * INDEX RANGE SCAN Cours Responsable IDX5 SORT JOIN6 TABLE ACCESS FULL Auditeurs
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Exemples : Jointure par hachage
Id Operation Name0 SELECT STATEMENT1 * HASH JOIN2 TABLE ACCESS BY INDEX ROWID Cours3 * INDEX RANGE SCAN Cours Responsable IDX4 TABLE ACCESS FULL Auditeurs
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Differentes Statistiques
Acces memoire :consistent gets : Nb d’acces a une donnee consistente enRAM (non modifiee)db block gets : Nb d’acces a une donnee en RAM
Acces physiques :physical reads : Nb total de pages lues sur le disque
recursive calls : Nb d’appels a un sous-plan (requeteimbriquee)redo size : Taille du fichier de log produit (update)sorts (disk) : Nb d’operations de tri avec au moins uneecrituresorts (memory) : Nb d’operations de tri en memoire
⇒ Taux d’efficacite du cache : 1− physical readsconsistent gets + db block gets
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Plan 3 : NESTED LOOPS + INDEX RANGE SCAN
Id Operation Name0 SELECT STATEMENT1 * NESTED LOOPS2 TABLE ACCESS BY INDEX ROWID Cours3 * INDEX RANGE SCAN Cours Responsable IDX4 * TABLE ACCESS FULL Auditeurs
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Plan 4 : NESTED LOOPS + INDEX RANGE SCAN
Id Operation Name0 SELECT STATEMENT1 NESTED LOOPS2 TABLE ACCESS BY INDEX ROWID Cours3 * INDEX RANGE SCAN Cours Responsable IDX4 * TABLE ACCESS BY INDEX ROWID Auditeurs5 * INDEX RANGE SCAN Auditeurs CODE UE
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
NESTED LOOPS + INDEX RANGE SCAN : Remarques
Pour chaque cours, il y a 20 ROWID, mais le clustering factorprevoit que ces cours soit groupes sur 2 pagesQuel est le PEP si la jointure est dirigee par Auditeurs ? Quelest son cout ?
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Plan 5 : SORT MERGE JOIN
Id Operation Name0 SELECT STATEMENT1* MERGE JOIN2 SORT JOIN3 TABLE ACCESS BY INDEX ROWID Cours4 * INDEX RANGE SCAN Cours Responsable IDX5 SORT JOIN6 * TABLE ACCESS FULL Auditeurs
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Plan 6 : HASH JOIN
Id Operation Name0 SELECT STATEMENT1 * HASH JOIN2 TABLE ACCESS BY INDEX ROWID Cours3 * INDEX RANGE SCAN Cours Responsable IDX4 * TABLE ACCESS FULL Auditeurs
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
PLAN 7 : NESTED LOOPS + INDEX + AND-EQUAL
Id Operation Name0 SELECT STATEMENT1 NESTED LOOPS2 TABLE ACCESS BY INDEX ROWID Cours3 * INDEX RANGE SCAN Cours Responsable IDX4 * TABLE ACCESS BY INDEX ROWID Auditeurs5 AND-EQUAL6 * INDEX RANGE SCAN Auditeurs CODE UE7 BITMAP CONVERSION TO ROWIDS8 * BITMAP INDEX SINGLE VALUE Auditeurs Annee
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
AND-EQUAL : Remarques
Intersection de liste empeche l’acces aux donnees inutilesNecessaire avec beaucoup de donnees et plusieurs restrictionsA-ton encore besoin d’acceder aux donnees Auditeurs ?SELECT COUNT(*)... Donc il suffit de compter le nombre deROWIDs, sans acces aux donnees
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
PLAN 8 : - TABLES ACCESS BY INDEX ROWID
Id Operation Name0 SELECT STATEMENT1 SORT AGGREGATE2 NESTED LOOPS3 TABLE ACCESS BY INDEX ROWID Cours4 * INDEX RANGE SCAN Cours Responsable IDX5 AND-EQUAL6 * INDEX RANGE SCAN Auditeurs CODE UE7 BITMAP CONVERSION TO ROWIDS8 * BITMAP INDEX SINGLE VALUE Auditeurs Annee
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Conclusion sur l’optimiseur
Verification des methodes d’accesL’acces aux donnees n’est pas toujours requisChoix de l’algorithme de jointureCombinaison des indexesDependant des statistiques sur les donnees
⇒ Necessaire de bien choisir :Indexes (cle primaire, couvrant, combinaison)Taille/Type des attributs (Stockage, Projection, Index)Organiser physiquement les donnees (Non-dense, hachage,tri/clustering factor)
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Exemple : double boucle imbriquee
Id Operation Name0 SELECT STATEMENT1 NESTED LOOPS2 NESTED LOOPS3 TABLE ACCESS BY INDEX ROWID Cours4 * INDEX RANGE SCAN Cours Responsable IDX5 * TABLE ACCESS BY INDEX ROWID Auditeurs6 * INDEX RANGE SCAN Auditeurs CODE UE7 TABLE ACCESS BY INDEX ROWID Personne8 * INDEX UNIQUE SCAN Personne ID
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Iterateurs
A chaque operateur est affecte un IterateurPermet de produire / consommer a la demandePossibilite de creer des operateurs ’Table’ en pipeline :Pipe-lined FunctionsBesoins :
Type de n-uplet retourneType table contenant ces n-upletsFonction f retournant cette table en pipelineRequete SQL avec TABLE(f ()) dans le FROM
Operations Plans PEL PEP EXPLAIN PEP Optim Pipeline
Conclusion
Pipeline1 Permet d’optimiser le resultat du premier tuple2 Reduit le nombre d’ecriture intermediaire3 Possibilite de creer des resultats localement optimises