architecture
TRANSCRIPT
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 1/14
Driss HAZZAF 1
Architecture physique d¶une base de données (ORACLE)
SGA
Shared Pool
Dictionary Cache
Library Cache
Buffer
Cache
Redo
Cache
Control files Redo log filesdata files Archive init file
DBWR LGWR PMONSMONCKPT
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 2/14
Driss HAZZAF 2
Structure physique Base (ORACLE)
TABLESPACE DATAFILE
SEGMENT
EXTENT
DB BLOCK
OS BLOCK
Objets Logiques Objets Physiques
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 3/14
Driss HAZZAF 3
Paramètres création table (ORACLE)
INITIAL : La taille du premier extent de la table
NEXT : La taille du deuxième extent de la table
MINEXTENTS : Le nombre d'extents de la table à sa création
MAXEXTENTS : Le nombre maximal d'extents de la table.
PCTINCREASE :Le taux d'incrémentation en pourcentage de
l'extent N par rapport à l'extent N- 1 ( Pour N > 2). Si pctincrease est
égal à zéro, alors tous les extents à partir du troisième sont égaux au
deuxième extent.
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 4/14
Driss HAZZAF 4
Paramètres création table (suite)
Exemple:
CREATE TABLE FOURNISSEUR ( NO_FOURNISSEUR NUMBER(10) NOT NULL, NOM VARCHAR2(100),PRENOM VARCHAR2(100),MAIL VARCHAR2(100),TELEPHONE VARCHAR2(30),CONSTRAINT FOURNISSEUR_PK PRIMARY KEY(NO_FOURNISSEUR) )PCTFREE 30PCTUSED 70STOR AGE
(INITIAL 2K NEXT
1K MINEXTENTS 4MAXEXTENTS 6PCTINCREASE 50);Cette table est créée avec un espace de 6.75 k, et sa taille max sera de 15.1875
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 5/14
Driss HAZZAF 5
Paramètres DB Block (ORACLE)
PctFree : c'est le pourcentage que Oracle laisse de libre dans un bloc de données pour les mises à jour. Dès qu'il reste que ce pourcentage de libre dans le bloc de données, Oracle bloque lesinsertion dans ce bloc et il ne permet que les "UPDATE" et
"DELETE". PctUsed : C'est le pourcentage en dessous du quel Oracle autorise à
nouveau les insertions dans un bloc pour le quel les insertionsétaient bloquées.
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 6/14
Driss HAZZAF 6
Structure Index B*Tree
Un arbre B d¶ordre K est un arbre équilibré :
± Chaque nud est une page contenant au mois K et au plus 2K articles.
± Dans un nud, l¶ordre se fait par rapport à la clé.
Les opérations possible sur arbre B sont :
± Recherche
± Insertion
± Suppression
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 7/14
Driss HAZZAF 7
Index B*Tree INSERTION
L'insertion d¶une clé dans un arbre d¶ordre k nécessite les opérationssuivantes :
± Chercher la feuille où la nouvelle clé devrait être insérée.
± Insérer la clé dans la feuille.
± Si le noeud possède plus de 2k clés, on le transforme en deuxnuds, chacun possédant k clés, et on remonte la clé du milieudans le nud père.
± Le nud père peut alors posséder trop de fils, le procédécontinue jusqu'à ce que l'on atteigne la racine.
± Si la racine doit être divisée, on remonte la clé du milieu dansune nouvelle racine, qui aura alors pour fils les deux nudscrées à partir de l'ancienne racine.
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 8/14
Driss HAZZAF 8
Exemple Arbre B+
On considère un index de type B+ d¶ordre 2 sur la colonne durée de la table Projet.
Construire l¶arbre correspondant à l¶insertion desdurées suivantes dans l¶ordre indiqué ( ne
mettre dans l¶arbre que les clés ) :
(1,9,5,11,43,61,13,23,89,41,119,25,27,29,31)
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 9/14
Driss HAZZAF 9
Solution
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 10/14
Driss HAZZAF 10
Optimisation requêtes SQL
Le travail d'optimisation d'une requête SQL commence par la génération du pland'exécution "EXPLAIN PLAN", ceci permet de connaître les différentes étapes del¶exécution de la requête (si le système utilise des indexes ou passe par un FULLSCAN de la table ... )Pour générer le Plan d'exécution d'une table sous ORACLE il faut :
± Créer la table PLAN_TABLE dans le schéma utilisateur si elle n'existe pas :
Pour créer cette table il faut exécuter le script UTLXPLAN.SQL, il existe dans"$ORACLE_HOME/RDBMS/ADMIN" sous UNIX ou"%ORACLE_HOME%/RDBMS/ADMIN" sous Windows.
± Générer le plan d'exécution de la requête SQL avec la commande EXPLAINPLAN :
EXPLAIN PLAN FOR REQUETE_SQL;
± Afficher le plan d'exécution de la requête SQL à partir de la tablePLAN_TABLE.
Dans un deuxième temps, il faut interpréter le plan d¶exécution et revoir le codeSQL de la requête et les indexes des tables s¶il le faut.
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 11/14
Driss HAZZAF 11
Optimisation requêtes SQL (Suite)
EXPLAIN PLAN FOR
SELECT P.LIBELLE AS Projet, A.NUMERO_EMPLOYE AS Employé
FROM PROJET P INNER JOIN AFFECTATION_PROJET A
ON P.PROJET_CODE = A.PROJET_CODE
WHERE A.PRIORITE = 1;
Le plan d¶exécution de la requête est le suivant :
0 SELECT STATEMENT
1 NESTED LOOPS
2 TABLE ACCESS AFFECTATION_PROJET FULL
3 TABLE ACCESS PROJET BY INDEX ROWID
4 INDEX PROJET_PK UNIQUE SCAN
Le système fait une boucle imbriquée pour la jointure entre les tables AFFECTATION_PROJET etPROJET. Il commence par une lecture séquentiel de la table AFFECTATION_PROJET pour chercher les lignes ayant comme priorité 1. Pour chaque ligne, il extrait la valeur dePROJET_CODE et interroge l¶index PROJET_PK de la table PROJET pour récupérer les adressesdes lignes correspondantes dans la table PROJET, puis il récupère La ligne correspondante àchaque adresse.Enfin le système fait la jointure entre les lignes des deux tables et envoi les libellesdes projets et les numéros d¶employés.
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 12/14
Driss HAZZAF 12
Exercices
1. On considère un index de type B+ d¶ordre 2 sur la colonne
durée de la table Projet. Construire l¶arbre correspondant àl¶insertion des durées suivantes dans l¶ordre indiqué, nemettre dans l¶arbre que les clés :(1,9,5,11,43,61,13,23,89,41,119,25,27,29,31)
2. Générer et expliquer le plan d¶exécution de la requêtesuivante :
SELECT P.LIBELLE AS Projet, T.DESCRIPTION AS Tache
FROM PROJET P INNER JOIN TACHE T
ON P.PROJET_CODE = T.PROJET_CODEWHERE T.PCT_REALISATION = 100;
3. Qu¶est-ce que vous pouvez proposer pour optimiser larequête précédente ?
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 13/14
Driss HAZZAF 13
Solution
1. L¶arbre B+ est le suivant :
29
9 23
1 5 9
41 61
11 13 23 25 27 29 31 41 43 61 89 119
5/12/2018 Architecture - slidepdf.com
http://slidepdf.com/reader/full/architecture-55a4d1e128213 14/14
Driss HAZZAF 14
Solution (suite )2. Le plan d¶exécution de la requête est le suivant :
SELECT STATEMENT
NESTED LOOPS
TABLE ACCESS TACHE FULL
TABLE ACCESS PROJET BY INDEX ROWID
INDEX PROJET_PK UNIQUE SCAN
Le système fait une boucle imbriquée pour la jointure entre les tables TACHE et PROJET. Il commence par une lecture séquentiel de la table TACHE pour chercher les lignes ayant un pourcentage deréalisation égal à 100. Pour chaque ligne, il extrait la valeur de PROJET_CODE et interroge l¶indexPROJET_PK de la table PROJET pour récupérer les adresses des lignes correspondantes dans latable PROJET, puis il récupère La ligne correspondante à chaque adresse.Enfin le système fait la jointure entre les lignes des deux tables et envoi les libelles des projets et les descriptions de tâches.
3. Pour améliorer la requête, on peut ajouter un index sur la colonne PCT_REALISATION de la tableTache.