6 L`indexation

publicité
ALSI S25
Administration d’un SGBD Relationnel
STS2 IG
Création d’index
Le 16/04/17
page 1/9
SOMMAIRE
1
PRESENTATION DE LA SEQUENCE ................................................................... 2
1.1
1.2
DESCRIPTION DES SAVOIRS ....................................................................................... 2
COMPETENCES ATTENDUES ...................................................................................... 2
2
PROBLEMATIQUE ................................................................................................... 2
3
ORGANISATION PHYSIQUE DES FICHIERS .................................................... 2
4
ORGANISATION LOGIQUE DES FICHIERS ...................................................... 3
5
METHODES D’ACCES ............................................................................................. 4
6
L’INDEXATION ......................................................................................................... 4
6.1
6.2
PRINCIPE.................................................................................................................... 4
DIFFERENTS TYPES D’INDEX ..................................................................................... 5
6.2.1
6.2.2
6.2.3
6.3
GESTION DES INDEX .................................................................................................. 9
6.3.1
6.3.2
6.3.3
6.4
B-Arbre.......................................................................................... 6
Hachage ......................................................................................... 7
Index bitmap .................................................................................. 7
Création ...................................................................................... 9
Suppression ................................................................................ 9
Réorganisation ............................................................................ 9
QUAND UTILISER LES INDEX ? .................................................................................. 9
D:\769797532.doc
1
ALSI S25
Administration d’un SGBD Relationnel
STS2 IG
Création d’index
Le 16/04/17
page 2/9
PRESENTATION DE LA SEQUENCE
1.1 Description des savoirs
Ce chapitre présente l’organisation logique des fichiers qui constituent une base de données.
S24 Système de gestion de fichiers
S25 Administration de la base de données
1.2 Compétences attendues
Comparer les techniques d’organisation des données
Administrer une BdD non répartie et en assurer la sécurité
2
PROBLEMATIQUE
Les SGBD doivent gérer des volumes de données parfois considérables (plusieurs gigas-octets
qui sont accédés de façon concurrente par plusieurs utilisateurs simultanément). Ceci impose
des contraintes de gestion efficace des données avec un contrôle fin au niveau de l’utilisation
afin d’assurer une certaine sécurité et un confort d’utilisation maximum.
L’objectif est donc de stocker les données afin d’assurer les performances maximales au
niveau des requêtes d’interrogation, d’insertion, de suppression et de mise à jour.
3
ORGANISATION PHYSIQUE DES FICHIERS
Afin d’assurer la pérennité de l’information, les données de la base de données sont stockées
sur un support de mémoire secondaire. Il existe différents types de mémoire :
les mémoires accessibles directement par la CPU (MC, mémoirescaches) - mémoires
volatiles -.
les mémoires secondaires (disques, BM, ...) plus lentes d'accès mais en général avec
une capacité plus grande. Non directement accessibles, - mémoires non volatiles -.
Les données d'une base de données sont en général trop volumineuses pour tenir entièrement
en mémoire centrale (RAM). Les données sont stockées sous la forme de fichiers
d'enregistrements. Les échanges entre la mémoire secondaire et la mémoire centrale se font
par transfert de page.
Définition
Une page est une granule d'allocation d'espace mémoire secondaire (unité de
lecture/écriture sur le support).
Chacune des pistes comporte la même quantité d'information. Un bloc (une page) représente
l'unité de transfert entre disque et zone tampon (buffer) qui est une zone réservée en mémoire
centrale. Il est possible de transférer plusieurs blocs à la fois (cluster). Le temps d'accès au
premier bloc se situe entre 15 et 60 ms; il est de l'ordre de 1 à 2 ms pour le bloc suivant.
D:\769797532.doc
ALSI S25
Administration d’un SGBD Relationnel
STS2 IG
Création d’index
Le 16/04/17
page 3/9
L’utilisation de plusieurs buffers permet d’améliorer les performances en réduisant
considérablement les temps d'accès. Ceci est possible dans le cas d'une machine multiprocesseurs ou d'un processeur d'E/S dédié.
Le Système de Gestion de Fichiers (SGF) gère les différentes méthodes d'accès. Il alloue de
l’espace pour les fichiers. Un fichier peut être considéré comme un ensemble de pages sur le
disque. Cette vision facilite la gestion en faisant correspondre des adresses relatives et des
adresses physiques.
@relative (n°page, déplacement)  @absolue (n°cylindre, n°piste, n°secteur)
Le gestionnaire d'entrées/sorties gère les différentes structures pour chaîner les différentes
pages affectées à un fichier d'enregistrements. Un enregistrement n'est pas nécessairement de
taille fixe (champ de taille variable ou champs optionnels). On utilise donc des séparateurs de
champs et d'enregistrements pour faciliter le parcours de l’information. Un fichier peut
contenir des enregistrements de différents types (cluster). On utilise des indicateurs de type
d'enregistrements. Un bloc peut contenir plusieurs enregistrements (facteur de blocage).
Le nombre d'enregistrements/bloc est soit fixe, soit variable (chaînage).
Les blocs sont soit consécutifs, soit chaînés.
4
ORGANISATION LOGIQUE DES FICHIERS
Le but est de minimiser le nombre d'accès pour retrouver un bloc particulier. Un descripteur
de fichier donne le nom du fichier, le nom du propriétaire, la liste des droits associés, la date
de création, la taille, l'organisation, le nombre de champs...
L’organisation de fichiers concerne le mode de stockage des enregistrements (1 fichier, 1
organisation).
L’organisation séquentielle
Les enregistrements sont accessibles dans leur ordre de création. Pour atteindre un
enregistrement, il faut d’abord lire tous les précédents.
L’organisation relative
Les enregistrements porte un numéro d’ordre ; Chaque enregistrement est accessible par
son numéro d’ordre. Les enregistrements peuvent aussi se lire séquentiellement du plus
petit au plus grand numéro d’ordre. Les enregistrements doivent être de taille fixe.
L’organisation séquentielle indexée
Quand un fichier est indexé, il est possible de retrouver un enregistrement précis en
connaissant une partie des informations qu’il contient : c’est la clé d’index.
Une table d’index donne la correspondance entre les valeurs des clés d’index et les
enregistrements où on les trouve.
D:\769797532.doc
5
ALSI S25
Administration d’un SGBD Relationnel
STS2 IG
Création d’index
Le 16/04/17
page 4/9
METHODES D’ACCES
Le type d’accès est choisi par le programmeur ou par le SGBD en tenant compte de
l’organisation des fichiers. Il détermine la façon dont les enregistrements seront recherchés
dans le fichier.
Accès séquentiel
On accède aux enregistrements les uns à la suite des autres
dans leur ordre de création pour un fichier séquentiel
dans l’ordre des numéros d’enregistrement pour un fichier relatif
dans l’ordre alphanumérique d’une clé d’index pour les fichiers séquentiels
indexés
Accès direct
L’accès direct n’est possible que sur les fichiers relatifs ou indexés. On accède
directement à un enregistrement
En connaissant son numéro d’ordre dans un fichier relatif
En connaissant la valeur de sa clé d’index dans un fichier indexé.
6
L’INDEXATION
6.1 Principe
L’indexation a pour but d’accélérer les traitements de recherche. Il existe différentes
techniques (indexation, hachage) selon le contexte. L’évaluation d'une technique se fait selon
des critères de temps d'accès, délai d'insertion, délai d'effacement, occupation mémoire.
Un index contient le critère de recherche.
Ici, index sur l’année des films.
D:\769797532.doc
ALSI S25
Administration d’un SGBD Relationnel
STS2 IG
Création d’index
Le 16/04/17
page 5/9
Ici, index sur des noms de films.
Un index est toujours trié. On parcourt l’index pour trouver la page de donnée.
Exemple : je cherche les données du film Psychose.
 En accès séquentiel : Parcours des pages 1, 2 et 3 => 3 accès disque
 En accès indexé : Parcours de la page d’index et parcours de la page 3 => 2 accès
disque.
En accès indexé, le nombre d’accès disque est toujours identique quelque soit la donnée à
rechercher et il est égal à la profondeur de l’arbre d’index + 1accès aux données.
6.2 Différents types d’index
Pour une même table, il est possible d'avoir plusieurs index :
Un Index primaire (plaçant) : l’ordonnancement des clés dans l'index correspond à
l'ordonnancement des enregistrements dans le fichier.
L’index secondaire (non plaçant) : l’ordonnancement des clés dans l'index correspond
à un ré-ordonnancement logique des enregistrements dans le fichier. L’index contient
alors le ROWID de l’enregistrement à accéder.
La table d’index peut contenir toutes les valeurs des clés d’index présentes dans le fichier de
données. On parle alors d’index dense. Dans le cas contraire (une clé d’index pour plusieurs
enregistrements), on parle d’index creux.
En général, on spécifie un index creux pointant sur chaque page disque. Il faut néanmoins
essayer de respecter la contrainte de taille car il est préférable que l’index tienne en mémoire
centrale. Un index non dense requiert moins de mises à jour lors des opérations d’insertion et
de suppression. Il faut établir un compromis entre temps d'accès / espace mémoire.
D:\769797532.doc
ALSI S25
Administration d’un SGBD Relationnel
STS2 IG
Création d’index
Le 16/04/17
page 6/9
Exemple d’index dense non plaçant :
Il est possible de spécifier un index secondaire, en général sur des attributs non-clés. Ce type
d’index est utilisé si le fichier n'est pas trié sur la clé d'index. Il nécessite une indirection pour
regrouper les pointeurs. Ceci implique une optimisation.
6.2.1
B-Arbre
Un B-Arbre (B Balanced = équilibré) est une structure de table d’index qui a la forme d'un
arbre équilibré. Tous les chemins qui mènent de la racine à une feuille ont la même longueur.
Cf exemple précédent.
Lors de la création de l’arbre (au fur et à mesure des créations d’enregistrements), des places
libres sont créées dans l’index pour ne pas le modifier systématiquement.
Une variante, l’arbre B+ est la structure de stockage par défaut d’Oracle.
D:\769797532.doc
ALSI S25
Administration d’un SGBD Relationnel
STS2 IG
Création d’index
6.2.2
Le 16/04/17
page 7/9
Hachage
Le hachage a pour but d’éviter de parcourir un index pour accéder à une donnée.
L’application d'une fonction de hachage doit permettre à partir de la valeur clé d'un
enregistrement de trouver la position de cet enregistrement dans la structure contenant tous les
enregistrements (tableau, fichier).
Lors d'une insertion, l'application de la fonction de hachage permet de déterminer la place ou
l'enregistrement doit être inséré. Il peut se poser
des problèmes de collision (différentes
techniques sont alors utilisées (place libre suivante, chaînage, seconde fonction de hachage).
Au dessus d'un taux de remplissage de 70%, les techniques de hachage s'avèrent inefficaces.
Notion de cluster sur Oracle.
6.2.3
Index bitmap
Physiquement, un index « Bitmap » stocke pour chaque valeur distincte de l'index un champ
binaire contenant autant de bits que de lignes dans la table de données. Ce champ binaire est
constitué d'une suite de bits, chaque bit correspondant à une ligne de la table de données (avec
la valeur 1 si la ligne contient la valeur de l'index, 0 sinon). De plus, la taille de ce champ
binaire est optimisée par le moteur Oracle afin que des longues suites de zéros puissent être
compressées.
une table « employés », avec une clé primaire, le no d'employé, et quelques
attributs à faible cardinalité (les colonnes Sexe, Statut, Temps partiel et Service).
Exemple : Voici
No
Nom
Sexe
Statut
Temps partiel
Service
1234
Martin
H
Cadre
N
Comptabilité
5845
Dupond
F
Employé
N
Informatique
4785
Dupont
F
Employé
O
Commercial
6985
Peron
H
Employé
N
Comptabilité
4115
Durand
F
Cadre
O
Commercial
8021
Michel
H
Directeur
N
Informatique
325
Thomas
H
Cadre
O
Informatique
8921
Loiseau
F
Employé
N
Commercial
8010
Boileau
H
Employé
N
Comptabilité
401
Maréchal
F
Employé
N
Comptabilité
D:\769797532.doc
ALSI S25
Administration d’un SGBD Relationnel
STS2 IG
Création d’index
Le 16/04/17
page 8/9
Si l'on décide d'indexer ces attributs, l'utilisation des index « Bitmap » s'impose naturellement. On
obtiendrait alors les quatre index ci-dessous :

l'index Sexe :

H
1001011010 ...
F

l'index Temps partiel :
Oui
0010101000 ...
Non
1101011111 ...
0110100100 ...
l'index Statut :

Cadre
1000101000 ...
Employé
0111000111 ...
Directeur
0000010000 ...
l'index Service
Informatique
0100011000 ...
Comptabilité
1001000011 ...
Commercial
0010100100 ...
Ainsi, lors de l'exécution d'une requête mettant en jeu des conditions portant sur ces attributs, le
serveur Oracle utilisera directement ces index « Bitmap ».
Par exemple, si l'on demande « Quels sont les salariés Hommes, de statut cadre et travaillant à temps
partiel ? », le plan d'exécution de la requête s'appuiera sur l'opération suivante :
Le résultat de la requête indique que c'est le tuple correspondant à la 7e ligne de la table qui satisfait
la condition demandée.
Si ces mêmes index avaient été structurés de manière standard (format « B-Tree »), le serveur Oracle
aurait dû parcourir une grande partie des branches de l'arborescence de chacun des index avant de
fournir le résultat. Cette méthode de résolution est bien évidemment bien plus consommatrice en
ressources machines
D:\769797532.doc
ALSI S25
Administration d’un SGBD Relationnel
STS2 IG
Création d’index
Le 16/04/17
page 9/9
6.3 Gestion des index
6.3.1
Création
Syntaxe
CREATE [UNIQUE|BITMAP] INDEX nom_d'index ON table (colonne [,...n])
[TABLESPACE NomTablespace]
Exemples
CREATE TABLE commande
(
NoCommande
int NOT NULL,
NoEmploye
int NOT NULL,
DteCommande
date NOT NULL
DEFAULT GETDATE(),
ProduitCommande int NOT NULL,
QteCommandee int NOT NULL
)
CREATE INDEX Icommande ON commande (NoEmploye)
6.3.2
Suppression
6.3.3
Réorganisation
Syntaxe
Syntaxe
DROP INDEX nom_d'index [,…n]
ALTER INDEX nom_d'index REBUILD
Exemple
Exemple
DROP INDEX ICommande
ALTER INDEX Icommande REBUILD
6.4 Quand utiliser les index ?
Colonnes à indexer
 Clés primaires et étrangères
 Colonnes dans lesquelles des plages de valeurs de clés sont recherchées
 Colonnes dont l'accès s'effectue selon un ordre trié
Colonnes à ne pas indexer
 Auxquelles il est rarement fait référence dans une requête
 Qui contiennent peu de valeurs uniques (à réserver aux index bitmap)
 Qui sont définies avec les types de données bit, text ou image
ATTENTION : Quand une fonction est appliquée au critère de recherche, l’index n’est pas
utilisé. Exemple :
CREATE INDEX IEmploye ON EMPLOYE (Nom)
SELECT *
FROM EMPLOYE
WHERE UPPER(nom) = ‘DUPONT’;
Oracle permet la création d’index qui prend en compte la fonction :
CREATE INDEX IEmploye ON EMPLOYE (UPPER(Nom))
D:\769797532.doc
Téléchargement