architecture

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 files data files Archive init file DBWR LGWR PMON SMON CKPT

Upload: hui-zhang

Post on 13-Jul-2015

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Architecture

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

Page 2: Architecture

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

Page 3: Architecture

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.

Page 4: Architecture

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

Page 5: Architecture

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.

Page 6: Architecture

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

Page 7: Architecture

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.

 

Page 8: Architecture

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)

 

Page 9: Architecture

5/12/2018 Architecture - slidepdf.com

http://slidepdf.com/reader/full/architecture-55a4d1e128213 9/14

Driss HAZZAF 9

Solution

 

Page 10: Architecture

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.

 

Page 11: Architecture

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.

 

Page 12: Architecture

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 ?

 

Page 13: Architecture

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

 

Page 14: Architecture

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.