Vous êtes sur la page 1sur 24

Administration et Sécurité

des Bases de Données


Dr.Ing. Alaeddine BOUKHALFA

Alaeddine.ensak@gmail.com
Alaeddine.boukhalfa@uit.ac.ma

Année Universitaire : 2019-2020 1


Optimisation et Administration
▪ Optimisation
C’est un ensemble d’actions de modifications ciblés au niveau des composants de la
base de données pour atteindre des objectifs de performance, c’est à dire augmenter le
débit et réduire les temps de réponse. Afin de satisfaire les utilisateurs.
▪ Méthodologie d’optimisation
1. Définition des objectifs d’optimisation raisonnable.
2. Mesurez et documentez les performances actuelles.
3. Identifier les goulets d’étranglement actuels sur Oracle (limitation d’Oracle).
4. Identifier les goulets d ’étranglement actuels du système d’exploitation (limitation
du SE).
5. Optimiser les composants concernés (Application, Instance, Base de données, E/S,
OS).
2
6. Application des procédures de contrôle des changements.
7. Mesurez et documenter les performances actuelles.
8. Répétez les étapes 3 à 7 jusqu’à ce que les objectifs soient atteintes.

3
▪ Problème rencontré
- J’interroge une petite table mais le temps réponse est grand.
→ de minimiser le temps de réponse.
- Je modélise et je crée une petite table mais cette dernière prend beaucoup d’espace
de stockage.
→ Nécessité de minimiser l’espace de stockage.
- Je viens d’installer un SGBD, mais il ne répond pas efficacement à mes traitements
(configuration par défaut, paramètres mal ajustés.)
→ Nécessité d’ajuster les paramètres de mon SGBD.

4
▪ Ce qu’il faut optimiser
- Optimiser la logique de la base de données.
- Gérer les méthodes d’accès.
- Optimiser physiquement la base de données.
- Optimiser les requêtes SQL.

5
Optimisation des schémas
▪ Le modèle relationnel
- Les bases d données relationnelles que nous étudions sont fondées sur le modèle
relationnel inventé par Edgar Frank Codd en 1970.
- Ce modèle s’appuie sur l’organisation des données dans des relations (aussi appelées
« entités »), qui sont des tables à deux dimensions :
• Les colonnes : ce sont les attributs qui caractérisent la relation.
• Les lignes : aussi nommées « tuples », elles contiennent les données.
Exemple :
Article Désignation Quantité
1 Huile 4
2 Fromage 6
3 SEL 20

6
▪ Type des données
- Le type des données semble facile à gérer, or ce n’est pas vraiment le cas.
- La conversion automatique du MCD en MPD peut provoquer de mauvais types.
- Il existe principalement 4 familles de types de champs :
• Numérique (entiers, décimaux…)
• Text
• Date et heure (TIMPESTAMP, Date et Heure avec une résolution en fractions de
seconde jusqu’à nanoseconde)
• Binaire (RAW <2000 octets, BLOB <= 4Go,…)

7
▪ La normalisation
- La normalisation de base de données : a pour but d’établir un bon modèle de données
dans lequel les données sont bien organisées (pas de redondance, cohérence…).
- La normalisation d’un modèle relationnel se base sur des règles définies appelées
Formes Normales.
- Ce qui est important dans la normalisation est de se poser les bonnes questions que
d’appliquer aveuglément des règles.

• 1FN: avoir une clé primaire et des valeurs atomiques.


Un contre exemple: (la colonne email regroupe plusieurs adresse email)

id pseudo nom email

1 Ed' la poignée M. Édouard Bracame edouard.bracame@joe-bar-team.org, ed@jbt.org

2 Joe l'arsouille M. Jean Manchzeck jean.manchzeck@joe-bar-team.org

8
• 2FN: 1FN + tous les attributs ne faisant pas partie de ses clés dépendent des clés
candidates complètes et non pas seulement d’une partie d’entre elles.
Un contre exemple: (L'attribut difficulte ne dépend que d'une partie de la clé primaire “figure” et non
de la clé primaire complète “skater, figure”)

skater [PK] figure [PK] difficulte note

Richie Ollie 2 8

Richie Flip 5 10

Richie Hard-Flip 10 9

Nyjah Flip 5 7

Nyjah Hard-Flip 10 8

9
• 3FN: 2FN + tous les attributs ne faisant pas partie de ses clés dépendent
directement des clés candidates (La troisième forme normale (3FN) ressemble à la
deuxième 2FN mais concerne la dépendance entre attributs non clés)
Un contre exemple: (l'attribut “sexe” peut être déduit de l'attribut non clé primaire “civilite”)

id [PK] civilite nom prenom sexe

1 Madame Germain Sophie F

2 Monsieur Hilbert David M

3 Madame Noether Emmy F

4 Madame Mirzakhani Maryam F

5 Monsieur Poincaré Henri M

6 Monsieur Villani Cédric M

10
• FNBC (Forme normale de Boyce-Codd): 3FN + tous les attributs ne faisant pas
partie de ses clés ne doivent pas déterminer une partie de la clé.
Un contre exemple: (l’attribur “capitale” determine l’attribut “pays”)

Id [PK] Pays [PK] Prénom Capitale

1 Maroc Jamal Rabat

2 Tunisie Karim Tunis

Il existe d’autres FN (4ème, 5ème, et 6ème) et elles sont un peu plus spécifiques.

11
▪ La dénormalisation
- Avant de dénormaliser un modèle il faut d’abord le normaliser.
• La dénormalisation pour historisation :

Les FNs ont pour but d’éviter la redondance de l’information. (Le prix actuel d’un
article et le prix de ce même article il y a quelques mois ne sont pas forcément les
mêmes) même si parfois ils sont identiques, elles n’ont pas le même cycle de vie.
→ Il y a deux solutions pour implémenter une gestion des commandes avec historique
des prix :
Commande Livre
N CMD (pk) Id Livre (pk)
Date CMD Titre
N Client (fk) Prix

Ligne CMD
N CMD (pfk)
Id Livre (pfk)
Quantité
PU

12
Commande Livre
N CMD (pk) Id Livre (pk)
Date CMD Titre
N Client (fk)

Ligne CMD Histo Prix


N CMD (pfk) Date Chang (pk)
Id Livre (pfk) Id Livre (pfk)
Quantité Prix
PU

13
• La dénormalisation pour performance et simplification en environnement OLTP
(online transaction processing) :
Le but de la normalisation est d’éviter la duplication afin de renforcer la performance,
mais parfois il faut stocker des attributs dérivés qui rendent service tels que :
MontantLigne = Quantité * Prix – MontantRemise
• La dénormalisation pour performance en environnement OLAP (Online Analytical
Processing) :
Les FNs ont été créées pour un environnement OLTP, dans OLAP, lancer une requête
sur des centaines milliers d’enregistrements, faire des jointures à chaque fois va être
assez coûteux (alors que la finalité est de faire l’analyse des données).
Dans l’OLAP, on duplique dans les tables de faits les données qui représentent les axes
d’analyse. OLAP Ligne CMD
Livre (pk)
Quantité
Titre
Prix
Année
Pays

14
Méthodes d’accès
▪ Les chemins d’accès

Rang Chemin d'accès


1 Une ligne par identificateur de ligne (ROWID)
- C’est la façon par laquelle les Une ligne par jointure de tables clustérisées avec
2
données sont accessibles. restriction
Une ligne par cluster haché avec une clé unique ou
3
primaire
- Il existe 15 chemins d’accès 4 Une ligne par clé unique ou primaire
possibles. 5 Jointure de cluster
6 Clé de cluster hachée
- l’optimiseur ne peut choisir l’un des 7 Clé de cluster indexée
8 Index composé (plusieurs colonnes)
chemins d’accès aux données que 9 Index sur une seule colonne
10 Recherche bornée sur colonnes indexées
lorsque la commande SQL contient 11 Recherche non bornée sur colonnes indexées
une clause WHERE ou une autre 12 Jointure avec tri-fusion
13 Minimum ou maximum de colonnes indexées
clause rendant le chemin utilisable. 14 Tri (order by) sur une colonne indexée
15 Parcours exhaustif de la table.

15
▪ Les indexs
- Permettent un accès rapide à partir d'une clé.
- Permettent de satisfaire certaines requêtes portant sur un ou plusieurs attributs.
→ Ne sont pas toujours le moyen le plus efficace pour accéder à une table.
- Ils peuvent exister indépendamment de l’organisation des données (plusieurs si on
veut optimiser plusieurs requêtes).

• Index non dense :


On suppose que le ficher des données est trié sur la clé et divisé en blocs, l’index
pointe uniquement sur les premiers enregistrements de chaque bloc.

16
17
• Index dense :
Les données ne sont pas triées sur la clé de recherche, alors l’index est établi sur toutes
les valeurs de la clé existante dans le fichier, et il les associe aux adresses des
enregistrements.

18
- Un index dense peut coexister avec un index non-dense.
- On parle des index primaires et secondaires lorsqu’un on a un fichier trié sur clé
primaire, et on crée un index non-dense, puis on ajoute des index denses pour les
attributs qui servent fréquemment à la recherche.

19
• Index multi-niveaux (index hiérarchisé) :
- Parfois la recherche dans l’index devienne pénalisée, alors il faut indexer l’index lui-
même.
- Dès le deuxième niveau d’indexation, on parle d’index non-dense.
- Pour un index à n niveaux, le niveau k étant un index trié et divisé en paquets, il
possède lui-même un index de niveau k+1, la clé de chaque entrée de ce dernier étant
la plus grande du paquet.

20
Example :
* Créer une table Personne (id, nom, prenom, email)
* Indexer la table personne.

CREATE TABLE PERSONNE (ID INTEGER, “NOM” VARCHAR2(10), “PERSONNE”


VARCHAR2(10), EMAIL VARCHAR2(30)) ;
CREATE TABLE matable (attribut TYPE, ...) ORGANIZATION INDEX ; (La table est stockée dans un B-
tree)
CREATE [UNIQUE|BITMAP] INDEX monindex ON matable (colonne[,colonne...]) ;

21
• Un index peut être :
- Simplement le stockage des données d'une colonne de table qui sera souvent
sollicitée (surtout au niveau des recherches).
CREATE INDEX IX1 ON T1 (COL1);
- L'ensemble de plusieurs colonnes qui feront l'objet de requête pour les recherches.
CREATE INDEX IX2 ON T1 (COL1, COL2);
- Le résultat d'une fonction simple ou complexe.
CREATE INDEX IX3 ON T1 (upper(COL3));
CREATE INDEX IX4 ON T1 (ma_fonction(COL1, COL2));

22
• Les index B-tree :
- Un index B-tree est un index stocké sous forme d'arbre (tree)
- l’arbre est ordonné et équilibré (profondeur homogène quelque soit la feuille), il peut
avoir 2, 3 voire plus de niveaux (profondeur de branche).
- Il existe des index B-tree créés automatiquement pendant la création d’une contrainte
de type « PRIMARY KEY » ou « UNIQUE.

23
• Les index Bitmap :
- les index Bitmap sont destinés à l'indexation de colonnes qui comportent peu de
valeurs distinctes et beaucoup d'enregistrements pour chacune de ces valeurs.
- Ils permettent une recherche très rapide.
-A l'inverse des index B-Tree, les index Bitmap ne stockent pas un pointeur vers un
enregistrement dans un fichier trié sur l'index, mais une valeur codée sur des bits pour
chaque valeur de la colonne indexée.
Exemple :

24

Vous aimerez peut-être aussi