SGBD - Unblog

publicité
Systèmes de Gestion de
Bases de Données
(SGBD)
Riadh Ben Messaoud
http://eric.univ-lyon2.fr/~rbenmessaoud
Université 7 novembre à Carthage
Faculté des Sciences Economiques et de Gestion de Nabeul
Licence Fondamentale IAG, 2ème année
2008 - 2009
Plan du cours
1.
2.
3.
4.
5.
6.
Introduction aux SGBDs
Architecture générale d'un SGBD
Organisation de données
Evaluation et optimisation des requêtes
Gestion de la concurrence / transactions
Gestion des pannes
FSEGN – Riadh Ben Messaoud
SGBD
2
Plan du cours
1.
2.
3.
4.
5.
6.
Introduction aux SGBDs
Architecture générale d'un SGBD
Organisation de données
Evaluation et optimisation des requêtes
Gestion de la concurrence / transactions
Gestion des pannes
FSEGN – Riadh Ben Messaoud
SGBD
3
Base de données ?

Une collection de données cohérentes entre elles,
généralement de taille importante.

Modélise une entreprise du monde réel
Entités (ex., étudiants, Briques)
 Associations (ex., Paul est inscrit en BD)


Un Système de Gestion de Bases de Données (SGBD)
est un logiciel destiné au stockage et à la manipulation de
bases de données.
FSEGN – Riadh Ben Messaoud
SGBD
4
Pourquoi un SGBD ?

Indépendance des données/applications et sûreté
d’accès aux données.

Temps de développement d’application réduit.

Intégrité des données et sécurité des accès.

Administration des données uniforme.

Concurrence des accès et reprise sur panne.
FSEGN – Riadh Ben Messaoud
SGBD
5
Modèle de données

Un modèle de données est un ensemble de concepts sur
les données.

Un schéma est une description d’un ensemble de données,
s’appuyant sur un modèle de données.

Le modèle relationnel est le plus répandu.
Concepts de base: relation, table avec des tuples et des
colonnes.
 Chaque relation a un schéma, qui décrit ses colonnes.


Les modèles objet et objet-relationnel sont utilisés pour
gérer des données complexes.

Les modèles semi-structurés se cherchent une place dans
les applications web, intégration de données, hétérogènes.
FSEGN – Riadh Ben Messaoud
SGBD
6
Niveaux d’abstraction

Plusieurs vues, un schéma
conceptuel et un schéma
physique.

Les vues (schéma externe)
décrivent comment l’utilisateur
voit les données.

Le schéma conceptuel
(schéma conceptuel) définit la
structure logique des données.

Le schéma physique (schéma
interne) décrit la structure
physique, de stockage, des
données.
ANSI – SPARC, 1975
FSEGN – Riadh Ben Messaoud
SGBD
7
Exemple : Base de données

Schéma conceptuel :




Schéma interne (physique)


élèves(ide: string, nom: string, prénom: string)
cours(idc: string, nomc:string, nbre_heures:integer)
inscription(ide:string, idc:string)
fichiers non séquentiels et index en b-arbres sur les attributs
clés.
Schéma externe (Vues) :

volume_elves(ide:string, nb_heures_tot:integer)
FSEGN – Riadh Ben Messaoud
SGBD
8
Indépendance des données

Les applications sont isolées des changements de
structure et du mode de stockage des données.

Indépendance logique des données : Protection des
changements de structure des données au niveau logique.

Indépendance physique des données : Protection des
changement de structure au niveau physique.

Un des plus importants bénéfices de l’utilisation des
SGBDs
FSEGN – Riadh Ben Messaoud
SGBD
9
Gestion de la concurrence

L’exécution concurrente de programmes est essentielle
pour un SGBD.

Les accès disque sont fréquents et relativement lents, il est
important que l ’unité centrale puisse exécuter de façon
concurrente les programmes des utilisateurs.

L’exécution partielle des actions de différents
programmes peut aboutir à des incohérences : ex.,
opération de débit en même temps que la réalisation d’un
virement.

Les SGBD assurent que la concurrence soit réalisée sans
problème : chaque utilisateur a l ’impression d’être seul à
travailler sur le système.
FSEGN – Riadh Ben Messaoud
SGBD
10
Gestion des transactions

Concept clé : transaction, une séquence atomique
d’actions sur une BD (lectures/écritures).

Chaque transaction doit laisser la BD dans un état cohérent
après l’avoir prise dans un état cohérent.

Les utilisateurs peuvent spécifier des contraintes d’intégrité
simples sur les données et le SGBD se charge de les garder
inviolables.

En dehors de ça, le SGBD n’a pas conscience de la sémantique
des données (ex., il ne comprend pas comment les intérêts
d’un compte bancaire sont calculés).

Le fait qu’une transaction préserve la cohérence de la BD est
au bout du compte de la responsabilité de l’utilisateur !
FSEGN – Riadh Ben Messaoud
SGBD
11
Concurrence des transactions

Les SGBD assurent que l’exécution de {T1, ... , Tn} soit
équivalente à une exécution en série T1’ ... Tn’.

Avant de lire/écrire un élément, chaque transaction demande à
émettre un verrou sur l’élément et attend que le SGBD lui
accorde ce verrou. Tous les verrous sont relâchés à la fin de la
transaction (protocole V2P strict.)

Idée : Si une action de Ti (ex., écrire X) affecte Tj (qui effectue
une lecture sur X), une des deux, disons Ti, obtient le verrou
sur X la première et Tj est forcée à attendre la fin de Ti; cette
façon de faire permet d’ordonner les transactions.

Et si Tj a déjà verrouillé Y et que Ti demande par la suite à
verrouiller Y? (Deadlock!) Ti ou Tj est abandonnée (aborted) et
remise en concurrence !
FSEGN – Riadh Ben Messaoud
SGBD
12
Atomicité

Les SGBD assurent l’atomicité (tout ou rien) même si un
crashes surgit au milieu d’une exécution de transaction.

Idée : garder un journal ou log (histoire) de toutes les
actions réalisées par le SGBD :

Avant qu’un changement ne soit réalisé sur la BD, l’action est
tracée dans un log file.

Après un crash, les effets d’une exécution partielle d’une
transaction sont défaites à l’aide du fichier log.
FSEGN – Riadh Ben Messaoud
SGBD
13
Journal

Les actions suivantes sont mémorisées dans le journal :
Ti écrit un élément: l’ancienne et la nouvelle valeur.
 Ti valide(commit)/abandonne(abort) : un enregistrement du
journal mémorise cette action.


Les enregistrements du journal contiennent l ’identifiant de
la transaction, ainsi il est facile de défaire une transaction
spécifique (ex., en cas de deadlock).

Le journal est souvent dupliqué et archivé sur un support
sûr.

Toute l’activité enregistrée dans le journal est gérée de
façon transparente par le SGBD.
FSEGN – Riadh Ben Messaoud
SGBD
14
Architecture d’un SGBD
Pages Web
Interface SQL
Applications
Commandes SQL
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire
de transactions
Gestionnaire de buffer
Gestionnaire
de verrous
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
15
Architecture d’un SGBD
Pages Web
Interface SQL
Applications
Commandes SQL
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire
de transactions
Gestionnaire de buffer
Gestionnaire
de verrous
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
Architecture
générale d'un
SGBD
16
Architecture d’un SGBD
Pages Web
Interface SQL
Applications
Commandes SQL
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire
de transactions
Gestionnaire de buffer
Gestionnaire
de verrous
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Organisation
de données
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
17
Architecture d’un SGBD
Pages Web
Interface SQL
Applications
Commandes SQL
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire
de transactions
Gestionnaire de buffer
Gestionnaire
de verrous
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
Evaluation et
optimisation
des requêtes
18
Architecture d’un SGBD
Pages Web
Interface SQL
Applications
Commandes SQL
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire
de transactions
Gestionnaire de buffer
Gestionnaire
de verrous
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
Gestion de la
concurrence/
transactions
19
Architecture d’un SGBD
Pages Web
Interface SQL
Applications
Commandes SQL
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire
de transactions
Gestionnaire de buffer
Gestionnaire
de verrous
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Gestion des
pannes
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
20
Résumé

Les SGBD sont utilisés pour maintenir et interroger un
volume de données important.

Quelques bénéfices : reprise sur panne, accès
concurrent, développement rapide d’applications,
intégrité et sécurité des données.

Les niveaux d’abstraction permettent l’indépendance des
données.

Un SGBD possède une architecture en couches.
FSEGN – Riadh Ben Messaoud
SGBD
21
Plan du cours
1.
2.
3.
4.
5.
6.
Introduction aux SGBDs
Architecture générale d'un SGBD
Organisation de données
Evaluation et optimisation des requêtes
Gestion de la concurrence / transactions
Gestion des pannes
FSEGN – Riadh Ben Messaoud
SGBD
22
Introduction
Rappel :
Une base de données relationnelle est constituée d’un ensemble de
relations où chaque relation possède un ensemble de n-uplets.

Physiquement ?
Les n-uplets d’une relation sont stockés dans un ou
plusieurs fichiers.
 Les fichiers peuvent être répartis sur un ou plusieurs
sites (BD distribuées).


Format de stockage des fichiers et performances
SGBD ?
Une utilisation optimale de la mémoire
 Un accès rapide
 Une mise à jour facile

FSEGN – Riadh Ben Messaoud
SGBD
23
Introduction

Schéma interne d’un SGBD


Définit les chemins d'accès aux données se trouvant dans les
fichiers de la BD
Problèmes ?
Allocation d'espace disque
 Accès aux n-uplets


Les n-uplets doivent êtres
transférés en mémoire centrale

Ce transfert se fait à travers une
zone particulière de la mémoire
 Mémoire tampon (buffer en anglais)
FSEGN – Riadh Ben Messaoud
SGBD
24
Introduction
Pages Web
Interface SQL
Applications
Commandes SQL
Gestionnaire
de transactions
Gestionnaire
de verrous
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire de buffer
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
25
Introduction
Pages Web
Interface SQL
Applications
Commandes SQL
Gestionnaire
de transactions
Gestionnaire
de verrous
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire de buffer
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
26
Visions des données

Vision des données par le SGBD : un ensemble
d’enregistrements (n-uplets) en mémoire.

Vision des données par le gestionnaire de fichiers : un
ensemble de pages mémoire

Vision des données par le gestionnaire de disque : un
ensemble de pages disque

Rôle du gestionnaire de buffer : passage des pages du
disque vers la mémoire (ou inversement)
FSEGN – Riadh Ben Messaoud
SGBD
27
Gestionnaire de buffer

Principaux objectifs :
Rendre les pages et les n-uplets qu’elles contiennent
accessibles en mémoire centrale
 Coordonner l’écriture des pages sur le disque en
coopération avec le gestionnaire de transactions
 Minimiser le nombre d’accès disques

Mémoire
tampon
FSEGN – Riadh Ben Messaoud
Disque
SGBD
28
Structure d’un buffer


Un buffer est formé d’une suite de cases contigües
dont chacune peut contenir une page
En mémoire centrale, une page est repérée par le
numéro de la case du buffer dans laquelle elle est
rangée
Mémoire centrale
Disque
FSEGN – Riadh Ben Messaoud
SGBD
29
Stratégie pour la gestion de buffer

Placer, au moment voulu, une page du disque vers la
mémoire et inversement

Politique de remplacement (ex. LRU, remplacer la page la
moins visitée)

Gestion des pages mises à jour

Partition de la mémoire

Vérification des droits sur les pages
FSEGN – Riadh Ben Messaoud
SGBD
30
Exemple
Mémoire
Disque
FSEGN – Riadh Ben Messaoud
SGBD
31
Exemple
Mémoire
Disque
FSEGN – Riadh Ben Messaoud
SGBD
32
Exemple
Mémoire
Disque
FSEGN – Riadh Ben Messaoud
SGBD
33
Exemple
Mémoire
Disque
FSEGN – Riadh Ben Messaoud
SGBD
34
Exemple
Mémoire
Modification
de la page
Disque
FSEGN – Riadh Ben Messaoud
SGBD
35
Exemple
Mémoire
Disque
FSEGN – Riadh Ben Messaoud
SGBD
36
Exemple
Mémoire
Date de montée
Date de dernier accès
…
Disque
FSEGN – Riadh Ben Messaoud
SGBD
37
Exemple
Mémoire
Page non accédée
depuis longtemps
Disque
FSEGN – Riadh Ben Messaoud
SGBD
38
Exemple
Mémoire
Disque
FSEGN – Riadh Ben Messaoud
SGBD
39
Exemple
Mémoire
Page non accédée
depuis longtemps
Disque
FSEGN – Riadh Ben Messaoud
SGBD
40
Recherche d’une page

L’opération de recherche d’une page :
a pour argument l’adresse p de la page cherchée ;
 retourne le numéro c de la case du buffer dans laquelle cette
page est rangée.

Mémoire centrale
c
Disque
p
FSEGN – Riadh Ben Messaoud
SGBD
41
Recherche d’une page

Cette opération se déroule selon les étapes suivantes :
Si la page p est dans la case c du buffer, retourner c. On
économise un accès disque.
2. Si la page p n’est pas dans le buffer, il faut la lire sur le
disque. On teste s’il existe une case libre pour la recevoir. Si
oui, soit c cette case.
3. Sinon, il faut libérer une case et donc renvoyer une page du
buffer sur le disque.
1.
1.
2.
Renvoyer la page la moins récemment utilisée (LRU)
Renvoyer la page la plus récemment utilisée (MRU)
Si la page à rejeter a été modifiée pendant son séjour en
mémoire centrale, il faut la réécrire sur le disque (gestionnaire
de transactions).
5. Transférer la page p du disque dans la case c et retourner c.
4.
FSEGN – Riadh Ben Messaoud
SGBD
42
Architecture d’un SGBD
Pages Web
Interface SQL
Applications
Commandes SQL
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire
de transactions
Gestionnaire de buffer
Gestionnaire
de verrous
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Organisation
de données
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
43
Plan du cours
1.
2.
3.
4.
5.
6.
Introduction aux SGBDs
Architecture générale d'un SGBD
Organisation de données
Evaluation et optimisation des requêtes
Gestion de la concurrence / transactions
Gestion des pannes
FSEGN – Riadh Ben Messaoud
SGBD
44
Introduction
Pages Web
Interface SQL
Applications
Commandes SQL
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire
de transactions
Gestionnaire de buffer
Gestionnaire
de verrous
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Organisation
de données
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
45
Introduction

Une BD doit assurer :

Le stockage des données


Conservation des données
Accès aux données
Structuration des données
 Moyens de manipulation des données


Afin d’accéder rapidement à un ensemble de n-uplets
vérifiant certaines conditions :
 Toute BD relationnelle est munie d’index qui permettent
d’associer chaque valeur d’un constituant à l’ensemble des
n-uplets qui possèdent cette valeur pour ce constituant.
FSEGN – Riadh Ben Messaoud
SGBD
46
Fichiers

Un fichier est enregistré sur un disque

Il peut s’étendre sur un ou plusieurs secteurs du disque

Un fichier possède un nom et est constitué par une suite de
blocs

On distingue quatre phases dans le cycle de vie d’un
fichier
L’allocation initiale
 L’expansion
 La contraction
 La réorganisation

FSEGN – Riadh Ben Messaoud
SGBD
47
Fichiers

L’allocation initiale :


Des blocs sont alloués au fichier lors de sa création
L’expansion :

Des blocs supplémentaires sont alloués au fur et à mesure des
besoins



La contraction :

Les blocs qui ne sont plus utilisés sont restitués



Bloc par bloc, à partir d’une pile de blocs libres
Par groupe de blocs contigus
Bloc par bloc sur la pile de blocs libres
Par groupe de blocs libres contigus ce qui permet d’éviter
l’éparpillement de la mémoire
La réorganisation :

On récupère les espèces mémoire libres qui ont pu
apparaître au cours des phases précédentes
FSEGN – Riadh Ben Messaoud
SGBD
48
Gestion des fichiers

Relation :


Champs :


Collection de pages ou blocs disque ou mémoire
Séquences d’octets de taille fixe ou variables représentant la
valeur d’un attribut de n-uplet sur le disque ou en mémoire
Enregistrement :

Collection de taille fixe ou variable de champs
FSEGN – Riadh Ben Messaoud
SGBD
49
Gestion des n-uplets

Les n-uplet d’une BD relationnelle sont rangés dans des
pages

Une page est stockée dans un bloc de fichier.

Supposons d’un bloc contient une seule page. L’adresse
physique d’un n-uplet est un quadruplet (s, f, b, r) où :
s est un identificateur de site
 f est un identificateur de fichier
 b et r sont des entiers positifs ou nuls

 Cette adresse désigne le rième n-uplet de la page enregistrée
dans le bième bloc du fichier f du site s
FSEGN – Riadh Ben Messaoud
SGBD
50
Structure d’une page

Une page est découpée en deux espaces :
La zone des n-uplets qui sont implantés dans un ordre
quelconque.
 Un répertoire implanté à la fin de la page. La ième case du
répertoire indique le déplacement du n-uplet i dans la page.

N-uplet (b,i)
k

i
1
Cette organisation permet l’évolution de la taille des
n-uplets sans qu’il soit nécessaire de modifier leurs
adresses dans la page.
FSEGN – Riadh Ben Messaoud
SGBD
51
Identification des n-uplets

Il est nécessaire d’identifier chaque n-uplet afin :



de le distinguer des autres n-uplets
de pouvoir y accéder à partir des index
Trois méthodes d’identification :
Par adressage direct
 Par adressage indirect
 Par la clé primaire

FSEGN – Riadh Ben Messaoud
SGBD
52
Identification des n-uplets

Identification par adressage direct

L’identificateur d’un n-uplet est son adresse physique

Cette méthode requiert la mise en place d’un pointeur de
suivi dans le cas où un n-uplet doit être changé de page suite
d’une mise à jour augmentant sa taille
N-uplet (b,i)
Numéro
de page
Déplacement
(i)
de bas de page
(bloc b)
FSEGN – Riadh Ben Messaoud
SGBD
53
Identification des n-uplets

Identification par adressage indirect

L’identificateur d’un n-uplet est un nombre entier attribué à
sa création.

Cette méthode nécessite la mise en place d’une table de
correspondance pour passer de l’identificateur à son adresse
physique.
(i)
N-uplet (b,i)
FSEGN – Riadh Ben Messaoud
SGBD
54
Identification des n-uplets

Identification par la clé primaire


Un index primaire permet d’assurer la correspondance entre
la clé et l’adresse physique du n-uplet.
Performances

L’identification par adressage direct est la méthode la plus
efficace. En effet :

Elle nécessite un seul accès disque pour accéder à un n-uplet
qui n’a pas de pointeur de suivi.

Elle nécessite deux accès disque pour accéder à un n-uplet
ayant un pointeur de suivi.

Elle ne nécessite pas de table de correspondance
FSEGN – Riadh Ben Messaoud
SGBD
55
Organisation des fichiers

Trois types de fichiers :
Fichiers séquentiels
 Fichiers accès direct
 Fichier séquentiels indexés (non-ordonnés)


Pour accéder à une page ou à un n-uplet dans un fichier,
on utilise les indexes

Un index est un fichier qui contient un ensemble
d’enregistrements formés d’une clé et d’une information
associée.
FSEGN – Riadh Ben Messaoud
SGBD
56

Dans une BD relationnelle, l’information associée est en
général un identificateur de n-uplet ou bien un ensemble
d’identificateurs de n-uplets (page).

Les indexes sont des fichiers qui contiennent les paires
Attribut(s) d'accès  Numéro de page

les indexes peuvent être
Séquentiels ou directs ou non-ordonnés
 Hachés
 Arbres B
 Autres

FSEGN – Riadh Ben Messaoud
SGBD
57
Plan du cours
1.
2.
3.
4.
5.
6.
Introduction aux SGBDs
Architecture générale d'un SGBD
Organisation de données
Evaluation et optimisation des requêtes
Gestion de la concurrence / transactions
Gestion des pannes
FSEGN – Riadh Ben Messaoud
SGBD
58
Introduction
Pages Web
Interface SQL
Applications
Commandes SQL
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire
de transactions
Gestionnaire de buffer
Gestionnaire
de verrous
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Organisation
de données
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
59
Organisation des fichiers

Trois types de fichiers :
Fichiers séquentiels
 Fichiers accès direct
 Fichier séquentiels indexés (non-ordonnés)


Pour accéder à une page ou à un n-uplet dans un fichier,
on utilise les indexes

Un index est un fichier qui contient un ensemble
d’enregistrements formés d’une clé et d’une information
associée.
FSEGN – Riadh Ben Messaoud
SGBD
60
Organisation des fichiers
Architecture d’un gestionnaire de fichiers
Séquentiel
Ouvrir
Haché
Lire
Indexé 1
Ecrire
Adressage
ME 1
ME k
Indexé 2
Fermer
Méthodes
d’accès
Analyseur
Module
d’E/S
Disques
FSEGN – Riadh Ben Messaoud
SGBD
61
Organisation des fichiers
 Classification des index

Accès mono-critère

Arbres



Séquentiel par hachage



Séquentiel-indexé
Arbres B
Statique
Dynamique
Accès multi-critères

Arbres



Arbre k-d
Arbres R
Accès par hachage

Hachage partitionné
FSEGN – Riadh Ben Messaoud
SGBD
62
Accès par hachage statique

C’est la méthode la plus simple et la plus ancienne.

Se base sur l’utilisation d’une fonction de calcul qui,
appliquée à sa clé, détermine l’adresse de la page dans
laquelle sera placé un n-uplet.

Le fichier est de taille constante (fixée lors de sa création)
et est divisé en p pages de taille fixe L.

Dans une page (bucket), les n-uplets sont rangés à la suite
dans l’ordre d’arrivée.
FSEGN – Riadh Ben Messaoud
SGBD
63
Accès par hachage statique
Fichier haché statique (Static Hashed File)
Fichier de taille fixe dans lequel les n-uplets sont placés dans des
pages dont l’adresse est calculée à l’aide d’une fonction de
hachage fixe appliquée à la clé.
0
1
.
N-uplet
.
H
.
p-1
FSEGN – Riadh Ben Messaoud
SGBD
64
Accès par hachage statique

La fonction de hachage doit être choisie de façon à
distribuer uniformément les n-uplets dans les pages.

Plusieurs techniques :
Le pliage qui consiste à choisir et combiner les bits de la clé.
 Les conversions de la clé en nombre entier ou flottant avec
utilisation de la mantisse permettant d’obtenir un numéro de
page.
 Le modulo (la fonction la plus utilisée) qui consiste à prendre
pour numéro de page le reste de la division de la clé par le
nombre de pages.


Ces techniques peuvent avantageusement être combinées.
FSEGN – Riadh Ben Messaoud
SGBD
65
Accès par hachage statique

Un problème de débordement se pose lorsqu’une pages est
pleine.
Ne pas gérer les débordements (fichier saturé !)

Gestion des débordements :

L’adressage ouvert consiste à placer le n-uplet (qui devrait
aller dans une page pleine) dans le première page suivantes
ayant de la place libre.
 Le chaînage consiste à constituer une page logique par
chaînage d’une page de débordement à une page pleine.
 Le rehachage consiste à appliquer une deuxième fonction de
hachage lorsq’une page est pleine. Cette fonction conduit
généralement à placer les n-uplets dans des pages de
débordements.


Dans tous les cas, la gestion des débordements dégrade les
performances et complique la gestion des fichiers hachés.
FSEGN – Riadh Ben Messaoud
SGBD
66
Plan du cours
1.
2.
3.
4.
5.
6.
Introduction aux SGBDs
Architecture générale d'un SGBD
Organisation de données
Evaluation et optimisation des requêtes
Gestion de la concurrence / transactions
Gestion des pannes
FSEGN – Riadh Ben Messaoud
SGBD
67
Architecture d’un SGBD
Pages Web
Interface SQL
Applications
Commandes SQL
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire
de transactions
Gestionnaire de buffer
Gestionnaire
de verrous
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
Evaluation et
optimisation
des requêtes
68
Optimisation des requêtes

Exécution de requêtes :


Série d’opérations permettant d’extraire des données de la
base.
Optimisation de requêtes :

Activité permettant de choisir la meilleur stratégie d’exécution
d’une requête.
FSEGN – Riadh Ben Messaoud
SGBD
69
Phases d’exécution d’une requête
Requête en langage de haut niveau (SQL)
Catalogue du
système
Décomposition de la
requête
Expression en algèbre relationnelle
Optimisation de la
requête
Statistiques de
la base
Plan d’exécution
Génération du code
d’exécution
Code généré
Base de données
principale
Exécution du code
de la requête
Résultat de la requête
FSEGN – Riadh Ben Messaoud
SGBD
70
Exemple d’une requête

Quels sont les noms des commerciaux basés dans les filiale
de Londres ?

SQL :
SELECT e.nom FROM Employe e, Filiale f
WHERE e.id_filiale = f.id_filiale
AND e.position = ‘commercial’
AND f.ville = ‘Londres’


Employe contient 1000 n-uplets
Filiale contient 50 n-uplets

Il y a 50 commerciaux et 5 filiales à Londres

Trois requêtes sont possibles en algèbre relationnelle
Calcul du coût de chaque requête en terme d’E/S

FSEGN – Riadh Ben Messaoud
SGBD
71
Phase 1 : Décomposition

Transformation de la requête SQL en une requête en
algèbre relationnelle

Vérification syntaxique et sémantique de la requête

Utilisation du catalogue du système

Représentation de la requête par un arbre d’opérateurs
algébriques
FSEGN – Riadh Ben Messaoud
SGBD
72
Catalogue du système

Appelé également dictionnaire de données

Contient la description des données de la base

Pour chaque relation :





Pour chaque index



Nom de la relation, identificateur du fichier et structure du fichier
Nom et domaine de chaque attribut
Nom des index
Contraintes d’intégrité
Nom et structure de l’index
Attribut appartenant à la clé de recherche
Pour chaque vue


Nom de la vue
Définition de la vue
FSEGN – Riadh Ben Messaoud
SGBD
73
Catalogue du système

Contient également des données statistiques






Cardinalité de chaque relation
Nombre de pages de chaque relation
Nombre de valeurs distinctes et de clés de recherche pour
chaque index
Hauteur des index et structures arborescentes
Valeur minimum et valeur maximum de chaque clé de
recherche dans chaque index
Par exemple, sous Oracle 8 :
USER_ALL_TABLES
 USER_CONSTRAINTS

FSEGN – Riadh Ben Messaoud
SGBD
74
Arbre algébrique

Représentation des relations impliquées dans la requête par
les nœuds feuille de l’arbre

Représentation des résultats intermédiaires par les nœud
non feuilles

Représentation du résultat de la requête par la racine de
l’arbre

Ordre des séquences d’opérations : des feuilles vers la
racine
FSEGN – Riadh Ben Messaoud
SGBD
75
Arbre algébrique
FSEGN – Riadh Ben Messaoud
SGBD
76
Phase 2 : Optimisation

Equivalences d’expressions
FSEGN – Riadh Ben Messaoud
SGBD
77
Phase 2 : Optimisation

Equivalences d’expressions
FSEGN – Riadh Ben Messaoud
SGBD
78
Phase 2 : Optimisation

Equivalences d’expressions
FSEGN – Riadh Ben Messaoud
SGBD
79
Transformation d’un arbre algébrique
1.
Division des conjonctions de sélections
2.
Ré-ordonnancement des sélections en utilisant la
commutativité des sélections et la commutativité des
sélections et des projections
3.
Application des sélections les plus sélectives en premier
4.
Transformation des produits cartésiens en jointure
5.
Ré-ordonnancement des équi-jointure en utilisant
l’associativité des jointures
6.
Déplacement des projections et création des nouvelles
projections en utilisant la commutativité des sélections et
des projections
FSEGN – Riadh Ben Messaoud
SGBD
80
FSEGN – Riadh Ben Messaoud
SGBD
81
FSEGN – Riadh Ben Messaoud
SGBD
82
FSEGN – Riadh Ben Messaoud
SGBD
83
FSEGN – Riadh Ben Messaoud
SGBD
84
FSEGN – Riadh Ben Messaoud
SGBD
85
FSEGN – Riadh Ben Messaoud
SGBD
86
FSEGN – Riadh Ben Messaoud
SGBD
87
FSEGN – Riadh Ben Messaoud
SGBD
88
FSEGN – Riadh Ben Messaoud
SGBD
89
FSEGN – Riadh Ben Messaoud
SGBD
90
FSEGN – Riadh Ben Messaoud
SGBD
91
FSEGN – Riadh Ben Messaoud
SGBD
92
FSEGN – Riadh Ben Messaoud
SGBD
93
Statistiques

Pour chaque relation R :
Le nombre de n-uplets
 Le nombre de n-uplets par bloc
 Le nombre de blocs pour la relation


Pour chaque attribut A de R :
Le nombre de valeurs distinctes de A
 Valeurs min et max de A
 Nombre moyen de n-uplets satisfaisant un prédicat sur A


Pour un index I de R sur un attribut A :
Le nombre de niveaux pour I
 Le nombre de blocs utilisés pour I

FSEGN – Riadh Ben Messaoud
SGBD
94
FSEGN – Riadh Ben Messaoud
SGBD
95
Plan du cours
1.
2.
3.
4.
5.
6.
Introduction aux SGBDs
Architecture générale d'un SGBD
Organisation de données
Evaluation et optimisation des requêtes
Gestion de la concurrence / transactions
Gestion des pannes
FSEGN – Riadh Ben Messaoud
SGBD
96
Architecture d’un SGBD
Pages Web
Interface SQL
Applications
Commandes SQL
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire
de transactions
Gestionnaire de buffer
Gestionnaire
de verrous
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
Evaluation et
optimisation
des requêtes
97
Statistiques

Pour chaque relation R :
NTuples(R) : nombre de n-uplets
 Bfactor(R) : nombre de n-uplets par bloc
 NBlock(R) : nombre de blocs pour la relation


Pour chaque attribut A de R :
NDistinctA(R) : nombre de valeurs distinctes de A
 MinA(R) et MaxA(R) : valeurs min et max de A
 SCA(R) : nombre moyen de n-uplets satisfaisant un prédicat
sur A


Pour un index I de R sur un attribut A :
NLevelsA(I) : nombre de niveaux pour I
 NLBlocksA(I) : e nombre de blocs utilisés pour I

FSEGN – Riadh Ben Messaoud
SGBD
98
Coût de σp(R)
Stratégies :
 Recherche linéaire (fichier non ordonné sans index)
 Recherche binaire (fichier ordonné sans index)
 Condition d’égalité sur la valeur d’une fonction de hachage
 Condition d’égalité sur la clé primaire
 Condition d’inégalité sur la clé primaire
 Condition d’égalité sur la clé d’un index secondaire clustered
 Condition d’égalité sur la clé d’un index secondaire
unclustered
 Condition d’inégalité sur un index secondaire en arbre B+
FSEGN – Riadh Ben Messaoud
SGBD
99
Coût de σp(R)
FSEGN – Riadh Ben Messaoud
SGBD
100
Coût de R ∞F S
Stratégie d’implantations de la jointure :

Boucles imbriquées (Block nested loop join)

Boucles imbriquées en utilisant un index (idexed nested
loop join)

Tri-fusion (Sort-merge join)

Hachage (Hash join)
 Pour chaque algorithme, possibilité de le faire en multipassses
FSEGN – Riadh Ben Messaoud
SGBD
101
Cardinalité de R ∞F S

NTuples(R ∞F S) ≤ NTuples(R) * NTuples(S)

Lorsque le prédicat est R.A=S.B

Si A est clé de R : NTuples(R ∞F S) ≤ NTuples(S)

Si B est clé de S : NTuples(R ∞F S) ≤ NTuples(R)
Si ni A ni B ne sont clés :
NTuples(R ∞F S) ~ Max(SCA(R)*NTuples(S), SCA(S)*NTuples(R))

FSEGN – Riadh Ben Messaoud
SGBD
102
Boucles imbriquées
FSEGN – Riadh Ben Messaoud
SGBD
103
Boucles imbriquées
FSEGN – Riadh Ben Messaoud
SGBD
104
Boucles imbriquées
S’il y a Nbuffer places en mémoire, on monte les pages de R en mémoire
par paquets de (NBuffer – 2) pages
FSEGN – Riadh Ben Messaoud
SGBD
105
Boucles imbriquées
Les blocks de S sont montés en mémoire autant de fois qu’il y a de block
dans R
FSEGN – Riadh Ben Messaoud
SGBD
106
Boucles imbriquées
S’il existe un index sur l’attribut de jointure d’une des deux relations, on
l’utilise pour trouver les n-uplets participant à la jointure
FSEGN – Riadh Ben Messaoud
SGBD
107
Tri-Fusion

Première étape : Tri des relations sur l’attribut de jointure


Exemple : Tri externe ou tri par séries monotones
Deuxième étape : Equi-jointure des deux relations triées

En parcourant simultanément les deux relations page par page
FSEGN – Riadh Ben Messaoud
SGBD
108
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
109
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
110
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
111
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
112
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
113
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
114
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
115
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
116
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
117
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
118
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
119
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
120
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
121
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
122
Tri externe : première étape
FSEGN – Riadh Ben Messaoud
SGBD
123
Tri externe
Ensemble
de départ
Ensemble
d’arrivé
Après la première étape de tri, les pages sont triées par paquets de 2
 3 paquets triés de 2 pages, soit 2*5 E/S
FSEGN – Riadh Ben Messaoud
SGBD
124
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
125
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
126
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
127
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
128
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
129
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
130
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
131
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
132
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
133
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
134
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
135
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
136
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
137
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
138
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
139
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
140
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
141
Tri externe : deuxième étape
FSEGN – Riadh Ben Messaoud
SGBD
142
Tri externe
Après la deuxième étape de tri, les paquets sont triés 2 par 2  1
paquets trié de 4 pages et 1 paquet de 1 pages, soit 2 * 5 E/S
FSEGN – Riadh Ben Messaoud
SGBD
143
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
144
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
145
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
146
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
147
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
148
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
149
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
150
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
151
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
152
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
153
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
154
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
155
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
156
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
157
Fusion
FSEGN – Riadh Ben Messaoud
SGBD
158
Architecture d’un SGBD
Pages Web
Interface SQL
Applications
Commandes SQL
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire
de transactions
Gestionnaire de buffer
Gestionnaire
de verrous
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
Evaluation et
optimisation
des requêtes
159
Rappel
La résolution d’une requête se déroule en trois phases :

Traduction de la requête en un arbre d’opérateurs
relationnels (sélection, jointure, projection, etc.)

Optimisation de l’arbre de requête. Il s’agit de déterminer
un plan d’exécution de coût minimal. Deux procédures sont
mises en œuvres :
Transformation de l’arbre de requête en un arbre équivalent
en se basant sur les propriétés d’associativité et de
commutativité de l’algèbre relationnelle.
 Evaluation du coût de résolution de chaque opérateur.


Evaluation du plan d’exécution.
FSEGN – Riadh Ben Messaoud
SGBD
160
Etude de cas

Soit le schéma relationnel suivant :
BIBLIOTHEQUE(NOBIB, NOM, VILLE)
LIVRE(ISBN, TITRE, ANNEE, MATIERE)
POSSEDE(COTE, NOBIB, ISBN)
EMPRUNTE(NOM, COTE, DATE)
FSEGN – Riadh Ben Messaoud
SGBD
161
Etude de cas

Trouver la requête SQL qui permet d’extraire les
noms des emprunteurs des livres publiés après 1985
et possédés par une bibliothèque de Nabeul ?
SELECT E.NOM
FROM EMPRUNTE E, POSSEDE P, LIVRE L,
BIBLIOTHEQUE B
WHERE
L.ANNEE > 1985
AND B.VILLE = ‘Nabeul’
AND E.COTE = P.COTE
AND P.ISBN = L.ISBN
AND P.NOBIB = B.NOBIB
FSEGN – Riadh Ben Messaoud
SGBD
162
Etude de cas

Traduire la requête en un arbre d’opérateurs ?
E.NOM
L.ANNEE
B.VILLE
P.NOBIB
P.ISBN
E.COTE
FSEGN – Riadh Ben Messaoud
1985
‘Nabeul’
B.NOBIB
=
L.ISBN
=
P.COTE
=
E
>
=
P
SGBD
L
B
163
Etude de cas

Optimiser l’arbre d’opérateurs ?
E.NOM
L.ANNEE
B.VILLE
P.NOBIB
P.ISBN
E.COTE
FSEGN – Riadh Ben Messaoud
1985
‘Nabeul’
Division des
conjonctions de
sélections
B.NOBIB
=
L.ISBN
=
P.COTE
=
E
>
=
P
L
SGBD
B
164
Etude de cas

Optimiser l’arbre d’opérateurs ?
L.ANNEE
B.VILLE
>
=
1985
‘Nabeul’
FSEGN – Riadh Ben Messaoud
SGBD
L.ANNEE
>
1985
B.VILLE
=
‘Nabeul’
165
Etude de cas
E.NOM
Application des
sélections les plus
sélectives en premier
L.ANNEE
>
1985
B.VILLE
=
‘Nabeul’
P.NOBIB
P.ISBN
E.COTE
FSEGN – Riadh Ben Messaoud
SGBD
L.ISBN
=
P.COTE
=
E
B.NOBIB
=
P
L
B
166
Etude de cas
E.NOM
P.NOBIB
B.NOBIB
=
Création de nouvelles
projections
P.ISBN
E.COTE
L.ISBN
=
P.COTE
=
L.ANNEE
E
FSEGN – Riadh Ben Messaoud
P
=
L
SGBD
1985 B.VILLE
=
‘Nabeul’
B
167
Etude de cas
E.NOM
P.NOBIB
P.ISBN
=
B.NOBIB
L.ISBN
=
B.NOBIB
E.COTE
L.ISBN
P.COTE
=
E.NOM
E.COTE
L.ANNEE
E
P
FSEGN – Riadh Ben Messaoud
=
L
SGBD
1985 B.VILLE
=
‘Nabeul’
B
168
Plan du cours
1.
2.
3.
4.
5.
6.
Introduction aux SGBDs
Architecture générale d'un SGBD
Organisation de données
Evaluation et optimisation des requêtes
Gestion de la concurrence / transactions
Gestion des pannes
FSEGN – Riadh Ben Messaoud
SGBD
169
Architecture d’un SGBD
Pages Web
Interface SQL
Applications
Commandes SQL
Exécuteur de plans
Parseur
Evaluateur d’opérateurs
Optimiseur
Gestionnaire de fichiers
Gestionnaire
de transactions
Gestionnaire de buffer
Gestionnaire
de verrous
Gestionnaire
de panne
Gestionnaire de disque
Fichiers index
Catalogue du système
Fichiers de données
FSEGN – Riadh Ben Messaoud
SGBD
Evaluation et
optimisation
des requêtes
170
Rappel

Les langages de requêtes de haut niveau comme SQL sont
déclaratifs. L'utilisateur:
indique ce qu'il veut obtenir.
 n'indique pas comment l'obtenir.


Donc le système doit faire le reste:
Déterminer le (ou les) chemin(s) d'accès aux données,
 les stratégies d'évaluation de la requête
 Choisir la meilleure. Ou une des meilleures …


Deux niveaux d’optimisation
Optimisation logique
 Optimisation physique

FSEGN – Riadh Ben Messaoud
SGBD
171
Estimation des résultats intermédiaires

L’estimation des de la taille des résultats intermédiaire
d’une requête se base sur un modèle de coût

Le modèle le plus simple est celui qui suppose
l’uniformité de la distribution des valeurs
 l’indépendance des attributs

 En l’absence d’informations précises, Ces hypothèses
sont utilisées dans tous les optimiseurs des systèmes
FSEGN – Riadh Ben Messaoud
SGBD
172
Modèle de coût

Un modèle de coût nécessite de connaître au minimum :

Le nombre de valeurs d’un attribut A noté Tuple(A)

Les valeurs minimale et maximale d’un attribut A notées
min(A) et max(A)

Le nombre de valeurs distinctes de chaque attribut A noté
NDIST(A)

Le nombre de tuples de chaque relation R noté Tuple(R)
FSEGN – Riadh Ben Messaoud
SGBD
Modèle de coût

Le nombre de tuples d’une sélection est alors calculé par la
formule :
Tuple(s(R)) = P(Critère) * Tuple(R)

P(Critère) désigne de la probabilité que le critère soit vérifié,
appelée facteur de sélectivité du prédicat de sélection
Facteur de sélectivité
Coefficient associé à une opération sur une table représentant
la proportion de tuples de la table satisfaisant la condition
de sélection
FSEGN – Riadh Ben Messaoud
SGBD
Modèle de coût
Sélectivité des opérations de sélections (restrictions)
Tuple(s(R)) = s * Tuple(R)








s (A = valeur) = 1/NDIST(A)
s(A > valeur) = (max(A) - valeur) / (max(A) - min(A))
s(A < valeur) = (valeur - min(A)) / (max(A) - min(A))
s (A IN liste valeurs) = (1/NDIST(A)) * Card(liste valeurs)
s(P et Q) = s(P) * s(Q)
s(P ou Q) = s(P) + s(Q) - s(P) * s(Q)
s( not P) = 1 - s(P)
Le coût dépend de l'algorithme (index, hachage ou balayage).
FSEGN – Riadh Ben Messaoud
SGBD
Modèle de coût
Sélectivité des opérations de sélections (restrictions)

Exemple
SELECT *
FROM R1
WHERE A = valeur
 s = 1/NDIST(A) avec un modèle uniforme
FSEGN – Riadh Ben Messaoud
SGBD
Sélectivité des Projections
Sélectivité d’une projection

Le nombre de tuples d’une projection sur un groupe
d’attributs X est obtenu par la formule :
Tuple(p(R)) = (1-d) * Tuple(R)

d = probabilité de doubles qui peut être estimée en fonction
du nombre de valeurs distinctes des attributs composant X
FSEGN – Riadh Ben Messaoud
SGBD
Sélectivité des Jointures
Sélectivité d’une jointure

La taille d’une jointure est plus difficile à évaluer en général
Tuple(R1 ∞ R2) = p * Tuple(R1) * Tuple(R2)

p dépend du type de jointure et de la corrélation des
colonnes :
p = 0 si aucun tuple ne joint
 p = 1 / min(NDIST(A),NDIST(B)) si distribution uniforme
équiprobable des attributs A et B sur un même domaine
 p = 1 si produit cartésien


L'algorithme change radicalement les coûts
linéaire si index
 produit des tailles si boucles imbriquées.

FSEGN – Riadh Ben Messaoud
SGBD
Le calcul des tailles

Taille des tables de base dans le catalogue

Calcul des tailles à la compilation
application du coefficient de sélectivité
 hypothèse d’uniformité


Possibilité d’histogrammes
RunStat(<Table>, <attribut>)
 Stockage dans le catalogue de l’histogramme de distribution de
l’attribut
 Utilisation par le modèle de coût

FSEGN – Riadh Ben Messaoud
SGBD
179
Choix du meilleur plan
Schéma interne
Arbre
d'opérations
Plans d'exécution
Générateur de
Plans
Stratégie de
Recherche
Bibliothèque de
transformations
Heuristique
s
de choix
Modèle de coût
Plan d'exécution
Optimal
FSEGN – Riadh Ben Messaoud
SGBD
Choix du meilleur plan

Le nombre des plan d’exécution possibles peut être très
grand

L’ensemble des plans possibles est appelé espace des
plans

Le générateur de plan utilise une stratégie de recherche
pour le choix du meilleur plan dont le coût se rapproche au
mieux du minimum possible
FSEGN – Riadh Ben Messaoud
SGBD
181
Choix du meilleur plan
Algorithme de sélectivité minimale

Ordonnancement des jointures par ordre de sélectivité
croissante
Rels = liste des relations à joindre ;
p = plus petite relation ;
Tant que Rels non vide {
R = relation de selectivité minimum de Rels ;
p = join(R,p) ;
Rels = Rels - R ; } ;
Return(p) ;
FSEGN – Riadh Ben Messaoud
SGBD
182
Choix du meilleur plan
Programmation dynamique (DP)

Méthode de la recherche opérationnelle

Toute sous-politique d’une politique optimale est optimale

Si deux sous-plans équivalents sont construits, il suffit de
grader le meilleur et de le compléter pour atteindre le plan
optimal

Construit progressivement le plan optimal, par ajouts
successifs d’opérateurs
FSEGN – Riadh Ben Messaoud
SGBD
183
Choix du meilleur plan
Les stratégies de recherche
Stratégie
de recherche
Enumérative
Exhaustive
Augmentation
FSEGN – Riadh Ben Messaoud
Aléatoire
Amélioration
itérative
SGBD
Recuit
simulé
Génétique
184
Exemple
CINEMA (Cinéma, Adresse, Gérant)
SALLE (Cinéma, NoSalle, Capacité)

Avec les hypothèses suivantes :
Il y a 300 n-uplets dans CINEMA, occupant 30 pages.
 Il y a 1200 n-uplets dans SALLE, occupant 120 pages.

FSEGN – Riadh Ben Messaoud
SGBD
185
Exemple

On cherche les adresses des cinémas ayant des salles de
plus de 150 places

On suppose que 5% des cinémas ont cette capacité

En SQL, cette requête s'exprime de la manière suivante :
SELECT Adresse
FROM CINEMA, SALLE
WHERE SALLE.capacité >150
AND
CINEMA.cinéma = SALLE.cinéma
FSEGN – Riadh Ben Messaoud
SGBD
186
Exemple
Adresse
Coût :
capacité > 150
Jointure : 30 * 120 =
3600 pages
(boucles)
cinéma=cinéma
Cinema
FSEGN – Riadh Ben Messaoud
Salle
SGBD
187
Exemple
Coût :
Adresse
Sélection : 120 * 5% = 6 pages
Lectures : 120 + 6
Jointure : 30 * 6 = 180 pages
Lectures : 180
cinéma=cinéma
Total = 306 pages
Capacité > 150
Cinéma
Salles
FSEGN – Riadh Ben Messaoud
SGBD
188
Comment optimiser ?

Traduire une requête exprimée avec un langage déclaratif
en une suite d'opérations (typiquement opérateurs de
l'algèbre relationnelle).


En fonction (i) des coûts de chaque opération (ii) des
caractéristiques de la base, (iii) des algorithmes utilisés,
estimer la meilleure stratégie.

On obtient le plan d'exécution de la requête.

L'exécuter.
FSEGN – Riadh Ben Messaoud
SGBD
189
Conclusion

L'optimisation s'appuie sur des :
règles de ré-écriture des expressions de l'algèbre.
 connaissances sur l'organisation physique de la base (index,
hachage, …)
 statistiques sur la base (taille des relations par exemple).


Un modèle de coût permet de classer les différentes
stratégies envisagées.

Un domaine critique pour l’exécution et l’évaluation des
requêtes en un temps raisonnable

Un impératif associant l’utilisateur, le SGBD et le
compilateur / optimisateur de requêtes
FSEGN – Riadh Ben Messaoud
SGBD
190
Téléchargement