Vous êtes sur la page 1sur 114

Bases de Donnes Avances

2011-2012

KHCHERIF Raoudha Raoudha.khcherif@topnet.tn Bureau 109

Plan

Rappel Optimisation des requtes Gestion des Transactions et Gestion de concurrences Bases de donnes reparties

Rappel: Introduction

Base de Donnes ?

Une collection de donnes cohrentes entre elles, gnralement de taille importante. Modlise une entreprise du monde rel
Entits (ex., tudiants, Briques) Associations (ex., Paul est inscrit en BD)

Un Systme de Gestion de Bases de Donnes

(SGBD) est un logiciel destin au stockage et la manipulation de bases de donnes.

Pourquoi un SGBD?

Indpendance des donnes/applications et sret daccs aux donnes. Temps de dveloppement dapplication rduit. Intgrit des donnes et scurit des accs. Administration des donnes uniforme. Concurrence des accs et reprise sur panne.

Modle de donnes

Un modle de donnes est un ensemble de concepts sur les donnes. Un schma est une description dun ensemble de donnes, sappuyant sur un modle de donnes. Le modle relationnel est le plus rpandu. Concepts de base: relation, table avec tuples et des colonnes. Chaque relation a un schma, qui dcrit ses colonnes. Les modles objet et objet-relationnel sont utiliss pour grer des donnes complexes. Les modles semi-structurs se cherchent une place dans les applications web, intgration de donnes htrognes,

Niveaux dabstraction

Plusieurs vues, un schma conceptuel et un schma physique.

Les vues dcrivent comment lutilisateur voit les donnes. Le schma conceptuel dfinit la structure logique des donnes. Le schma physique dcrit la structure physique, de stockage, des donnes.

2. Objectifs des SGBD

I- Indpendance Physique X - Standards II- Indpendance Logique III Langage de manipulation

IX - Gestion de la confidentialit VIII - Concurrence daccs VII - Gestion des pannes VI - Gestion de la cohrence

BD

IV - Gestion des vues V - Optimisation des questions

I - Indpendance Physique

Indpendance des programmes d'applications vis vis du modle physique :

Possibilit de modifier les structures de stockage (fichiers, index, chemins d'accs, ) sans modifier les programmes; Ecriture des applications par des non-spcialistes des fichiers et des structures de stockage;

Meilleure portabilit des applications et indpendance vis vis du matriel.

II - Indpendance Logique
Gestion des mdicaments
Nombre_Mdicaments
IdM 1 2 3 . Nom Aspegic 1000 Fluisdal Mucomyst .. Description . . . . . . . . Nombr e 30
Patients
Id - P Nom Lebeau Troger . Prnom Jacques Zoe . Id - M 1 2 3 . Nom Aspegic 1000 Fluisdal Mucomyst ..

Les applications peuvent dfinir des vues logiques de la BD


Cabinet du Dr. Masse
Prescription Visites
Id - D 1 2 Id - P 2 3 Id - V 1 4 Date 15 juin 1 mars Prix 250 250 Id - V 1 1 . Ligne 1 2 . Id - M 12 5 . Posologie 1 par jour 10 gouttes

Mdicament
Description .. .. .. ..

20 230 ..

1 2 .

Docteur
Id-D 1 2 3 . Nom Dupont Durand Masse .. Prnom Pierre Paul Jean Id-V

Prescription
Ligne 1 2 1 2 3 . Id-M 12 5 8 12 3 . Posologie 1 par jour 10 gouttes 2 par jour 1 par jour 2 gouttes

Visites
Id-D 1 1 2 2 Id-P 2 1 2 3 Id-V 1 2 3 4 Date 15 juin 12 aot 13 juillet 1 mars Prix 250 180 350 250

1 1 2 2 2 .

Patients
Id-P 1 2 3 4 . Nom Lebeau Troger Doe Perry . Prnom Jacques Zoe John Paule . Id-M 1 2 3 .

Mdicament
Nom Aspegic 1000 Fluisdal Mucomyst .. Description .. .. .. ..

Avantages de lindpendance logique

Possibilit pour chaque application d'ignorer les besoins des autres (bien que partageant la mme BD).
Possibilit d'volution de la base de donnes sans rcriture des applications :

ajout de champs, ajout de relation, renommage de champs.

Possibilit d'intgrer des applications existantes sans modifier les autres. Possibilit de limiter les consquences du partage : Donnes confidentielles.

III - Manipulation aise

La manipulation se fait via un langage dclaratif La question dclare lobjectif sans dcrire la mthode

Le langage suit une norme commune tous les SGBD SQL : Structured Query Langage

Smantique Logique du 1er ordre ++ Syntaxe (aperu !) SELECT <structure des rsultats>

FROM <relations> WHERE <conditions>

IV Des vues multiples des donnes

Les vues permettent dimplmenter lindpendance logique en permettant de crer des relations virtuelles Vue = Question stocke Le SGBD stocke la dfinition et non le rsultat Exemple : la vue des patients parisiens la vue des docteurs avec leurs patients La vue des services statistiques ...

V Excution et Optimisation

Traduction automatique des questions dclaratives en programmes procduraux : Utilisation de lalgbre relationnelle Optimisation automatique des questions Utilisation de laspect dclaratif de SQL Gestion centralise des chemins d'accs (index, hachages, ) Techniques doptimisation pousses

Economie de l'astuce des programmeurs milliers d'heures d'criture et de maintenance de logiciels.

VI - Intgrit Logique

Objectif : Dtecter les mises jour errones Contrle sur les donnes lmentaires Contrle de types: ex: Nom alphabtique Contrle de valeurs: ex: Salaire mensuel entre 1 et 5MD Contrle sur les relations entre les donnes Relations entre donnes lmentaires: Prix de vente > Prix d'achat Relations entre objets: Un lecteur doit tre inscrit sur une seule liste lectorale

Contraintes dintgrit

Avantages : simplification du code des applications scurit renforce par l'automatisation mise en commun des contraintes Ncessite : un langage de dfinition de contraintes d'intgrit la vrification automatique de ces contraintes

VII - Intgrit Physique

Motivations : Tolrance aux fautes Transaction Failure : Contraintes d'intgrit, Annulation System Failure : Panne de courant, Crash serveur ... Media Failure : Perte du disque Communication Failure : Dfaillance du rseau Objectifs : Assurer l'atomicit des transactions Garantir la durabilit des effets des transactions commises Moyens : Journalisation : Mmorisation des tats successifs des donnes Mcanismes de reprise

Transaction
Incohrence possible...

Etat cohrent
Begin Transaction

Etat cohrent Commit

Begin CEpargne = CEpargne - 3000 CCourant = CCourant + 3000 Commit T1

Transaction: Excution dun programme au dessus dune BD

Concept cl : transaction, une squence atomique dactions sur une BD (lectures/critures) sparant un commit ou un rollback du commit ou du rollback suivant. Chaque transaction doit laisser la BD dans un tat cohrent aprs lavoir prise dans un tat cohrent. Les utilisateurs peuvent spcifier des contraintes dintgrit simples sur les donnes et le SGBD se charge de les garder inviolables. En dehors de a, le SGBD na pas conscience de la smantique des donnes (ex., il ne comprend pas comment les intrts dun compte bancaire sont calculs). Le fait quune transaction prserve la cohrence de la BD est au bout du compte de la responsabilit de lutilisateur!

Ordonnancement et concurrence des transactions

Les SGBD assurent que lexcution de {T1, ... , Tn} soit quivalente une excution en srie T1 ... Tn.

Avant de lire/crire un lment, chaque transaction demande mettre un verrou sur llment et attend que le SGBD lui accorde ce verrou. Tous les verrous sont relchs la fin de la transaction (protocole V2P strict.) Ide: 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 premire et Tj est force attendre la fin de Ti; cette faon de faire permet dordonner les transactions. Et si Tj a dj verrouill Y et que Ti demande par la suite verrouiller Y? (Deadlock!) Ti ou Tj est abandonne (aborted) et remise en concurrence!

Proprits des transactions

Atomicit

Unit de cohrence : toutes les mises jour doivent tre effectues ou aucune.
La transaction doit faire passer la base de donne d'un tat cohrent un autre. Les rsultats d'une transaction ne sont visibles aux autres transactions qu'une fois la transaction valide. Les modifications d une transaction valide ne seront jamais perdue

Cohrence

Isolation

Durabilit

Atomicit

Les SGBD assurent latomicit (tout ou rien) mme si un crash surgit au milieu dune excution de transaction. Ide: garder un journal ou log (histoire) de toutes les actions ralises par le SGBD :

Avant quun changement ne soit ralis sur la BD, laction est trace dans un log file. Aprs un crash, les effets dune excution partielle dune transaction sont dfaites laide du fichier log.

Atomicit et Durabilit
ATOMICITE
Panne Begin CEpargne = CEpargne - 3000

DURABILITE Begin CEpargne = CEpargne - 3000 CCourant = CCourant + 3000 Commit T1

CCourant = CCourant + 3000

Commit T1

Crash disque

Annuler le dbit !!

Sassurer que le a t fait !

virement

VIII - Partage des donnes

BD

Accs concurrent aux mmes donnes


Conflits daccs !!

Isolation et Cohrence

BD

Le SGBD gre les accs concurrents


Chacun limpression dtre seul (Isolation) Cohrence conserve (Pas de maj conflictuelles)

IX Confidentialit

Objectif : Protger les donnes de la BD contre des accs non autoriss Deux niveaux : Connexion restreinte aux usagers rpertoris (mot de passe) Privilges d'accs aux objets de la base

Usagers : Usager ou groupe dusagers


Objets : Relation, Vue, autres objets (procdures, etc.)

X - Standardisation

Lapproche bases de donnes est base sur plusieurs standards


Langage SQL (SQL1, SQL2, SQL3) Communication SQL CLI (ODBC / JDBC) Transactions (X/Open DTP, OSI-TP)

Force des standards


Portabilit Interoprabilit Applications multisources

Architecture Fonctionnelle de Rfrence


Requte ANALYSEUR
Analyse syntaxique Analyse smantique Gestion des schmas Modification de requtes Contrle d'intgrit Contrle d'autorisation Ordonnancement Optimisation laboration d'un plan Excution du plan Mthodes d'accs Contrle de concurrence Atomicit des transactions

META-BASE

TRADUCTEUR

OPTIMISEUR

Plan d'Accs

EXECUTEUR

BD

3. Architecture des SGBD


Les architectures physiques de SGBD sont trs lies au mode de rpartition. BD centralise

BD client/serveur
BD client/multi-serveurs BD rpartie BD htrogne BD mobile

Architecture centralise
Terminaux passifs

rseau

Appli 1 Appli 2

Appli n

Mainframe

SGBD donnes

Architecture client-serveur
Clients intelligents Appli 1 Appli 2 Appli n rseau

serveur

SGBD code donnes

Architecture Client-Multiserveurs

Appli 1

SQL

SQL

ODBC
SQL

ODBC
SQL

SGBD 1 code donnes code

SGBD 2 donnes

Architecture rpartie

Appli 1 Appli 2 Appli n

SGBD 1 code donnes code

SGBD 2 donnes

Architecture mobile
Clients intelligents mobiles

Donnes rpliques et/ou personnelles

Rseau sans fil

serveur

SGBD code donnes

Applications traditionnelles des SGBD

2 grandes familles de serveurs de BDR OLTP (On Line Transaction Processing) Cible des SGBD depuis leur existence

Banques, rservation en ligne ... Trs grand nombre de transactions en parallle Transactions simples

OLAP (On Line Analytical Processing) Entrepts de donnes , Data Mining


Faible nombre de transactions Transactions trs complexes

Evolution des BD
BD BD BD light PicoDBMS dentreprise personnelles (PDA / Tl.) carte puce Capacit

Prix

Nombre

Loptimisation des requtes

Introduction

Performances des requtes : talon d'Achille des BDR Tout SGBDR comprend un optimiseur qui lui donne un meilleur contrle les performances Comment amliorer les performances d'une requte?

Comprendre la traduction SQL oprations sur tables Connatre lutilisation des index les algorithmes qui implantent les oprations sur tables Comprendre le choix de stratgie de loptimiseur

Architecture en couche dun SGBD

Traitement de requtes relationnelles


Requte

Le processeur de requtes assurent les fonctions suivantes:

ANALYSEUR

Analyse syntaxique et ventuellement smantique des requtes afin de vrifier leur validit.
Dcomposition des requtes en squences doprations lmentaires , le SGBD procde a loptimisation, c a d rechercher la dcomposition qui conduit a un temps dexcution minimal

META-BASE

TRADUCTEUR

OPTIMISEUR

P.A

EXECUTEUR

Excution; au cours de cette phase, le processeur accde aux donnes spcifies par la requte et ralise le calcul ncessaire.

BD

Dcomposition optimale d'une requte

Analyse syntaxique Analyse smantique

Optimisation algbrique

Plan d'excution logique (arbre algbrique)

Optimisation globale

Plan d'excution physique

Paramtres utiliss

Schma de la BD : schmas des tables et des chemins d'accs Statistiques : taille des tables, des index, distribution des valeurs Algorithmes mis en oeuvre

Optimisation statique vs dynamique

Statique

dcomposition et optimisation n'ont lieu qu'une seule fois sans tenir compte des modifications intervenues dans la BD

Dynamique

recherche de la meilleure stratgie chaque excution de la requte au dpend des performances


Mise jour de l'optimisation si les statistiques indiquent des changements importants

Hybride

Optimisation :???

Le problme : quivalence smantique

Objectifs de loptimisation

Trouver le meilleur plan dexcution . MEILLEUR ??? Donnant les rsultats le + vite .

Optimisation pour le temps de rponse ( response time)

Minimisant la consommation de ressources

Optimisation du travail total (Total work)

Minimisant le temps de dlivrance des premiers tuples

Optimisation de la latence (Latency /First tuples )

Importance de loptimiseur dans un SGBDR

valuation efficace dune requte relationnelle: Le SGBD doit valuer un certain nombre de stratgies (Plan dexcution) potentiellement efficaces pour traiter la requte Choisir celle qui optimise lutilisation des ressources de la machine telle que : Espace mmoire, temps de calcul. E/S disques et ventuellement les communications rseaux. Le module qui remplit cette fonction : Optimiseur de requtes La conception dun optimiseur est une tache difficile et importante a la quelle les concepteurs de SGBD donnent beaucoup dimportance Impact sur les performances du SGBD et sur le temps de rponse des requtes La capacit du SGBD a traiter rapidement les requtes dpend de lefficacit de loptimiser a choisir le meilleur plan dexcution. Librer le programmeur de la connaissance du fonctionnement des oprateurs

Les acteurs de loptimisation


Idalement : 2 requtes quivalentes en SQL ( langage dclaratif) doivent, aprs loptimisation, produire le mme arbre algbrique !

En plus cet arbre doit tre le meilleur ! Seuls les concepteurs de SGBD ( noyau) doivent comprendre loptimisation et lexcution

Dans la pratique : 2 requtes quivalentes ne donnent pas toujours le mme plan Le plan nest pas toujours le meilleur ! lutilisateur (concepteur de lapplication ) devra comprendre !!!

Les composants de loptimiseur

Le travail de loptimiseur est souvent dcompos en deux phases:

Phase 1 : optimisation logique, appele aussi rcriture

Optimisation indpendante du cot dexcution: elle est base sur des transformations algbriques de la requtes dorigine. La rcriture simplifie le travail de loptimisation physique en effectuant un premier ordonnancement

Phase 2: optimisation physique, phase principale de tout processus doptimisation

Elle prends les dcisions lies aux informations sur le placement physique des donnes Gnrations des plans dexcutions candidats Choix du meilleur plan dont lvaluation est la moins coteuse, par exemple qui sexcute en un minimum de temps

Optimisation logique

Loptimisation effectue dpend essentiellement de lordre des oprateurs apparaissant dans arbre algbrique Effectuer un premier ordonnancement des oprations: transformations algbriques

Reposent sur le concept dexpression algbriques quivalentes Ralisent prioritairement les oprations de slection : c1 et c2(R)=c1( c2(R))=c2( c1(R)) Combinent une slection et un produit cartsien en un oprateur de jointure c(RS)= RcS Regroupent les squences doprateurs unaires tels que slections et projections et insrent les oprateurs unaires dans les oprandes doprateurs binaires c(RS)=c(R)S c1 et c2(RS)=c1(R) c2(S) Recherchent les sous expression identiques qui apparaissent plusieurs fois dans une expression algbrique

Arbre algbrique

A partir dune requte analyse, la plupart des SGBD gnre un arbre algbrique (ou plan d'excution physique)

noeuds terminaux : relations noeuds intermdiaires : oprations relationnelles noeud racine : rsultat arcs : flux de donnes

Arbre algbrique
n RESTRICTION
V. CRU = V

n PROJECTION
"BEAUJOLAIS"
V.NV, V.CRU

n TRI
V.CRU, V.MILL

n JOINTURE
A. NV = A

n DIFFERENCE
V. NV

V B1

B2

n AGREGAT

n PRODUIT CARTESIEN

n UNION
COUNT(*),AVG(DEGRE) V.CRU, V.MILL

B1 B2 B1

B2
V

EXEMPLE D'ARBRE
Consommateur (NC,NOM,PRENOM,ADRESSE,REGION) Aconsommer (NC,NP,DATE,QUANTITE) Produit(NP,NOMP,REGION,CHOIX) REQUETE : "NOM ET PRENOM DES COSOMMATEURS PARISIENS AYANT COSOMMER DU P1 , AVANT LE 8 AOUT 2007"

RESULTAT C.NOM, C.PRENOM A.DATE < 08-08-07

P.NOMP= P1

Cot d'excution:

10 millions de consommateurs dont 1 m Paris 10 millions d aconsommer dont 10000 de P1 1000 Produits 10 m + 10m * 1m + 10 m * 1000 + de l'ordre de 10 ** 13 comparaisons de tuples !!!

A.NP

P.NP

C.NC

A.NC

PRODUIT P

= C.VILLE "PARIS"

ACONSOMMER A

CONSOMMATEUR C

Exemple BD Films

Film (idFilm, titre, anne, genre, rsum, codePays) Artiste (idArtiste, nom, prnom, anneNaissance) Role (idActeur, idFilm, nomRle) Pays (code, nom, langue)

Traitement des blocs

il y a autant de plans dexcution que de blocs dans une requte. L'optimiseur se concentre sur un bloc la fois Pour optimiser l'excution : limiter le nombre de blocs imbriqus

Exemple requete 1 avec 1 seul bloc


Exemple : afficher tous les films avec James Stewart, parus en 1958 SELECT titre FROM Film F, Role R, Artiste A WHERE A.nom = Stewart AND A.prenom=James AND F.idFilm = R.idFilm AND R.idActeur = A.idArtiste AND F.annee = 1958

Un seul bloc

Exemple requete 1 avec 2 blocs


SELECT titre FROM Film F, Role R WHERE F.idFilm = R.idFilm AND F.annee = 1958 AND R.idActeur IN (SELECT idArtiste FROM Artiste WHERE nom=Stewart AND prenom=James)

2 blocs

Requete 1 avec 3 blocs


SELECT titre FROM Film WHERE annee = 1958 AND idFilm IN (SELECT idFilm FROM Role WHERE idActeur IN (SELECT idArtiste FROM Artiste WHERE nom=Stewart AND prenom=James)) 3 blocs lisible, mais coteux

Restructuration algbrique

Base sur des rgles de rcritures, proprits des oprateurs algbriques Consiste rorganiser les oprations de la requte

Problme :

suivant l'ordre des oprateurs algbriques dans un arbre, le cot d'excution est diffrent

Pourquoi?

1. le cot des oprateurs varient en fonction du volume des donnes traites i.e., plus le nombre de tuple des relations traites est petit, plus les cots cpu et d'E/S sont minimiss 2. certains oprateurs diminuent le volume des donnes e.g., restriction et projection

Rgles de Restructuration

(1) Commutativit des jointures (2) Associativit des jointures (3) Groupabilit des restrictions (4) Semi-commutativit des projections et restrictions (5) Semi-commutativit des restrictions et jointures (6) Semi-distributivit des projections / jointures (7) Distributivit des restrictions / unions ou diffrences (8) Distributivit des projections / unions

Commutativit des Jointures/Produit cartsien

S
<==> X
X

R1

R2

R2

R1

Associativit des jointures

Il existe N!/2 arbre de jointure de N relations.

Groupage des Restrictions/Projection


Ai = a
A2

Ai = a et Aj = b Aj = b
A1

A1 A2 <==>

Semi-commutativit des Projections

Il est possible de descendre les projections, mais les attributs utiliss dans la suite doivent tre conservs !!!
A1, Ap A1, Ap

Ai = a
Ai = a

Ai, A1, Ap

Semi-commutativit des restrictions et jointures

Ai = vi

<==>

R2 (.. Bj..) X Ai = vi

R1 (.. Ai..)

R2 (.. Bj..)

R1 (.. Ai..)

Semi-commutativit des restrictions et jointures

A1 = vi

<==>

A1 = vi

R2 (.. Bj..)

R1 (.. Ai..)

R2 (.. Bj..)

R1 (.. Ai..)

Commutation des projection avec les unions

A1..Ap <====>

A1..Ap

A1..Ap

R1(..AI..) R1(..AI..) R2(..AI..)

R2(..AI..)

Algorithme doptimisation dune expression de lalgbre relationnelle


Excuter tout dabord les oprations unaires (slection, projection) puis les oprations binaires Pour considrer les arbres de flux de donnes minimum, dplacer les slections et les projections vers le bas Si deux projections successives portent sur une mme relation, les regrouper et liminer des ventuelles projections inutiles ai auraient pu apparatre ( projection sur tout les attributs)

1. 2. 3. 4.

5.

Utiliser la rgle (3) pour dcomposer une slection comportant plusieurs prdicats en une squence de slection Pour chaque slection dplacer les slections aussi bas que possible dans larbre (rgles 4, 5 et 7) Pour chaque projection, dplacer les projetions aussi bas que possible dans larbre (rgles 4, 6 et 8) Combiner les squences de slections et de projections en une seule slection, une seule projection, ou une slection suivie par une projection. L'ordre des unions, diffrences et jointures reste inchang !!!

Exemple d'Arbre Optimis


Rsultat C.NOM, C.PRENOM

Cot d'excution: 10 m + 1m * 100000 + 1 m * 1000 + de l'ordre de 10 ** 11 comparaisons de tuples !

A.NP

P.NP

C.NOM, C.PRENOM,A.NP C.NC A.NC

P.NP

C.NC, C.NOM, C.PRENOM

A.NC, A.NP P.NOMP P1" = A.DATE > 01-01-83 P

C.VILLE = "PARIS"

Optimisation physique

Loptimisation logique est insuffisante pour un plan dexcution de cot minimal Optimisation physique Recherche d'un plan d'excution physique combinant des oprateurs physiques (chemins daccs et traitements de donnes)

Plan d'excution physique


dpend des chemins d'accs qui restreignent le choix d'oprations physiques pour une opration logique donne des statistiques du nombre de pages en mmoire centrale

Algbrique/Physique

Une opration algbrique peut donner plusieurs oprations physiques

Exemple : jointure par boucles imbriques

Plusieurs oprations algbriques peuvent tre implantes par une seule opration physique

Exemple : slection et projection peuvent tre ralises par un seul parcours squentiel

Plan d'excution physique

Liste ordonne d'oprateurs physiques avec chemins d'accs aux tables et index et indication de tri d'une table

Reprsent par un arbre


Feuille : chemins d'accs aux tables et index Noeud : opration physique

Chemins d'accs

Ils dpendants des organisations de fichiers existantes :

1. Balayage squentiel 2. Accs par adresse 3. Parcours dindex 4. Accs par hachage

Plan optimal

L'optimiseur compare une estimation de cot des oprations Pour une slection Att>a avec un index sur Att, sont compares une estimation par balayage squentiel et une estimation par parcours de l'index

Reprsentation arborescente Exemple


6
Projection

SELECT F.titre FROM Film F, Pays P 5 WHERE F.codePays = P.code AND Acces par adresse Film P. nom='ITALY' 4

Jointure Boucles Imb

Italy
2
Slection

Avec index sur codePays : ind_codePays dans Film

Index (range scan) ind_codePays

Acces squentiel Pays

Algorithmes

On a gnralement le choix entre plusieurs algorithmes pour effectuer une opration algbrique

Slection Tri Jointure

Algorithmes de SELECTION

SELECTION ou recherche dans un fichier par :

Balayage squentiel Accs par adresse

ou

Parcours squentiel

En gnral le fichier n'est pas tri sur l'attribut de slection :

On lit le fichier bloc par bloc Quand un bloc est en mmoire, on traite les enregistrements quil contient

Accs direct

Opration en deux tapes :

on obtient (avec un index) ladresse des enregistrements ou du bloc parcourir avec cette adresse on va parcourir le bloc, pour y lire lenregistrement

Exemple

Le fichier occupe 500 blocs, une lecture de bloc prend 0,01 s (10 millisecondes). Un parcours squentiel (ou la moiti pour une recherche par cl) prendra 5 secondes Une recherche par index ncessite 2 ou 3 accs pour parcourir lindex, et un seul accs pour lire lenregistrement :

4x0.01=0.04s=40 milisecondes

Utiliser les index?

Si la recherche est sur une cl : oui Sinon se poser les questions suivantes : 1. Le critre de recherche porte-t-il sur un ou sur plusieurs attributs ? Sil y a plusieurs attributs, les critres sont-ils combins par des and ou des or ? 2. Quelle est la slectivit (pourcentage des lignes concernes) de la recherche ?

Slectivit d'un attribut

A attribut de la table R

Sel(A,R) =pourcentage de tuples de R qui ont la mme valeur pour l'attribut A

Ne pas crer d'index slectivit trop faible

Exemple
On suppose quun index a t cr sur idFilm. SELECT * FROM Film WHERE idFilm = 20 AND titre = Vertigo; On passe par lindex.

SELECT * FROM Film WHERE idFilm = 20 OR titre = Vertigo On ne passe pas par lindex.

Algorithmes de TRI

Utiliss pour

les ORDER BY
les algorithmes de jointure (sort/merge) llimination des doublons (clause DISTINCT) les oprations de regroupement (GROUP BY)

Algorithmes de JOINTURE

sans index sur l'attribut de jointure


jointure par boucles imbriques jointure par tri-fusion jointure par hachage

avec index sur l'attribut de jointure (sur une des 2 tables)

jointure par boucles indexes

Jointure par boucles imbriques

utiliser quand les tailles des relations sont petites Pour chaque tuple r de R

Pour chaque tuple s de S

si r et s sont joignables alors J=J {r || s}

Jointure par tri-fusion

Plus efficace que les boucles imbriques pour de grosses tables R joint A=B S

Trier R sur A Trier S sur B Fusionner les deux tables tries

Jointure par hachage

Algorithme rcent, encore peu rpandu Trs efficace quand une des deux tables est petite Ncessite d'avoir des statistiques

Principe de la jointure par hachage

On hache la plus petite des deux tables R1 sur l'attribut de jointure avec une fonction H On parcourt squentiellement la deuxime table R2 ; pour chaque tuple de R2, on consulte la page indique par H ; si la page contient des tuples de R2, on les joint

Jointure avec un index

Boucles imbriques indexes


On balaye la table non indexe R1 Pour chaque tuple de R1, on utilise lindex sur l'attribut de jointure de R2 pour trouver les tuples de R2 qui satisfont la condition de jointure

Trs efficace (un parcours et des recherches par adresse)

Estimation du cot et choix des algorithmes

L'optimiseur compare une estimation des cuts pour les oprations L'estimation du cot d'une opration physique utilise un modle de cot qui dpend de

l'algorithme la taille des relations la slectivit des attributs

Statistiques
Elles permettent dajuster le choix de lalgorithme, par exemple,

1. Boucles imbriques simples si les relations sont petites 2. Balayage squentiel au lieu de parcours dindex si la slectivit est faible.

Objectifs
Dans lhypothse dune base centralise, on cherche essentiellement limiter le nombre dentres/sorties. Stratgies :

Soit on cherche obtenir le premier enregistrement le plus vite possible (exemple dune application interactive). Soit on cherche minimiser le temps globaldexcution (exemple dune application batch).

Optimisation de requtes (Schmas)


Requte (Declarative)

Optimisation logique Optimisation physique

Rcriture

Requte (Algebrique)
Gnrateur de Plans Stratgie de Recherche

Modle de cot

Espace de Recherche

Estimateur de tailles

Mthodes dimplantation

Plan d'excution Optimal

Optimisation physique des requtes

La restructuration algbrique est insuffisante car elle nordonne pas les oprations binaires. Aussi lapplication dune slection initiale peut faire perdre un index qui serait utile pour excuter une jointure. Solution possible:

Gnrer tous les plans Estimer le cot de chacun Choisir celui du moindre cot. liminer a priori tous les plans qui font appel a des produits cartsiens liminer tous les plans qui neffectuent pas les slections des que possible

Mais le nombre de plans est trs grand

Optimisation Physique de requtes

Optimisation physique de requtes dans les SGBD est modlise selon 3 composantes:

Espace de recherche : dcrit de faon abstraite lensemble des plans dexcution alternatifs pour reprsenter la requte a optimiser (espace des possibilits=espace de tous les plans possibles) Modle de cot/ fonction de cot: prdire le cot dun plan dexcution

Pour comparer les plans dexcutions, loptimiser a besoin dun modle de cot, qui associe une valeur ou un vecteur de valeurs a chaque plan Ces valeurs sont des estimations de diverses caractristiques de lexcution du plan, par exemple le nombre dE/S disque. Elles se basent sur des informations statistiques maintenues dans le catalogue

Estimation des tailles des rsultats intermdiaires

Stratgie de recherche:

Dcrit les plans dexcution qui sont explors et dans quel ordre, Produit le meilleur plan dexcution relativement a lensemble des plans examins.

Modle de cot

Ncessite la connaissance :

Taille des rsultats intermdiaires de toutes les oprations considres Prise en compte des chemins daccs aux relations (index, placement) qui change directement ces cots.

Le modle simple est celui qui suppose luniformit de la distribution des valeurs et lindpendance des attributs. Un tel modle ncessite de connatre au minimum:

Le nombre de valeur dun attribut A not CARD(A) Les valeurs minimum et maximum dun attribut A, MIN(A), MAX(A) Le nombre de valeurs distinctes de chaque attribut A not NDIST(A) Le nombre de tuples de chaque relation R not CARD(R) Le nombre de tuples dune restriction (R) est alors calcul par la formule: CARD((R)) = s(critre)*CARD(R)

Facteur de slectivit
s(critre) dsigne la probabilit que le critre soit vrifi appel aussi facteur de slectivit ou prdicat de restriction

Coefficient associ a une table reprsentant la proportion de tuples de la table satisfaisant la condition de slection.

Slectivit des Restrictions

TAILLE (s(R)) = s * TAILLE(R) avec: 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 cot dpend de l'algorithme (index, hachage ou balayage).

Slectivit des projections

Le nombre de tuples dune projection sur un groupe dattributs X est plus simplement donne par la formule:
CARD((R))=(1-d)*CARD(R))

Avec d = probabilit de doubles. La probabilit de doubles peut tre estime en fonction du nombre de valeurs distinctes des attributs composant X.

Slectivit des jointures

CARD( R1 R2) = p * CARD(R1) * CARD(R2)

p dpend du type de jointure et de la corrlation des colonnes : p = 0 si aucun tuple ne joint p = 1 / MAX(NDIST(A),NDIST(B)) si distribution uniforme quiprobable des attributs A et B sur un mme domaine p = 1 si produit cartsien

L'algorithme change radicalement les cots


linaire si index, produit des tailles si boucles imbriques.

Stratgies de Recherche

Le nombre de plans dexcution possibles peut tre trs grands pour des questions complexes, afin dviter de les explorer tous, les optimiseurs modernes sont construits comme des gnrateurs de plans couples a une stratgie de recherche dcoulant des techniques doptimisation de la recherche oprationnelle Procdure utilise par loptimiseur pour explorer lespace des plans dexcutions afin de dterminer un plan de cot proche du minimum possible.

Diffrentes Stratgies
Stratgie de recherche

Enumrative

Alatoire

Exhaustive

Augmentation

Amlioration itrative

Recuit simul

Gntique

Stratgies de recherche

Stratgies numratives:

numrent systmatiquement des plans possibles

Stratgies exhaustives: les numrent tous Stratgies par augmentation: les construisent progressivement en partant par exemple de la projection finale et en introduisant progressivement les relations par ordre de taille croissante, elle vitera en gnral les produits cartsiens et appliquera des que possible restriction et projection.

Stratgies alatoires

Explorent alatoirement lespace des plans

Lamlioration itrative: tire au hasard n plans et essaie de trouver pour chacun deux le plan optimum le plus proche. Loptimum des plans localement optimum est alors retenu comme plan daccs La stratgie du recuit simul procde a partir dun plan quon tente doptimiser en appliquant les transformations successives. Les transformations retenues amliorent le plan exceptes quelques unes introduites afin dexplorer un espace plus large. Stratgie gntique: visent a fusionner deux plans pour en obtenir un 3eme.

Problme dordonnancement

Il faut pouvoir ordonner les jointures, union diffrences en fonction des tailles des relations arguments. Ncessit de dvelopper un modle de cot gnral permettant d'valuer le cot d'un plan, c'est--dire d'un arbre annot par des choix d'algorithmes. Annotation:

Marque associe un noeud indiquant l'algorithme utiliser pour l'oprateur avec ses paramtres (index, hachage, )

Optimisation physique

Choix des meilleurs algorithmes pour les oprations relationnelles


Utilisation des indexs jointure par index , etc... Structures de donnes existantes Statistiques sur les relations Algorithmes existants

En fonction de

Modles de cot

Estimation du cot : nombre d'accs des pages (blocs) sur disque Variables

Nombre d'enregistrements d'une table Nombre de pages occupe par une table sur disque Mmoire disponible en nbre de pages

Conventions

Nombre de tuples N ou NR ou card Nombre de blocs B ou BR Nombre de niveaux et nombre de blocs feuilles de l'index multi-niveaux I sur A

nNiveauxA(I) , nBlocsFA(I)

Nombre moyen d'enregistrements par valeur de l'attribut A de R

CSA(R)

Stratgies pour une slection sur un attribut

1. Parcours squentiel (fichier non tri) sans index 2. Recherche binaire (fichier tri) sans index 3. Condition d'galit sur la cl primaire 4. Condition d'ingalit sur la cl primaire 5. Condition d'galit sur un index secondaire 6. Condition d'ingalit sur un index secondaire en arbre B+

Cot d'une stratgie de slection

1.

Slection A=a sans index sur A Parcours squentiel sur fichier non tri :

estimation du cot : B estimation du cot : B/2 pour un attribut cl

2. Slection A=a sans index sur A Recherche binaire sur fichier tri sur A:

estimation du cot : log2(B)

Cot d'une stratgie de slection

3. Condition d'galit sur la cl primaire K Selection K=k , index primaire I

estimation du cot : nNiveauxK(I)+1

4. Condition d'ingalit sur la cl primaire K Selection K>k (ou K<k)

nNiveauxK(I)+B/2 (si distribution uniforme des valeurs de K)

Cot d'une slection


5. Condition d'galit sur la cl secondaire B Selection B=b estimation du cot : nNiveauxK(I)+CSB(R)/Fb 6. Condition d'ingalit sur un index secondaire I en arbre B+ Selection B>b estimation du cot : nNiveauxI(I)+ nBlocsFI(I)/2 +N/2

Oprateur de jointure
Jointure Sans Index: Boucles imbriques Tri fusion Hachage

Boucles_Imbriquees(R,A,S,B) { Pour chaque tuple de Rfaire { LIRE (R,Tuple1)


Pour chaque tuple de S faire {Lire(S,Tuple2); si tuple1.A=tuple2.B alors Ecrire(Resultat,tuple1||tuple2);

Tri_Fusion (R,A,S,B) { RT=TRIER(R,A); ST=TRIER(S,B); Resultat=FUSIONNER(RT,ST)

}
Cout en E/S= Page(R1)*LOG(Page(R1)) + Page(R2)*LOG( Page(R2)) + Page(R1)+ Page(R2)

}
}

} Cout en E/S= Cot

: BR +BR *BS

Cot : BR * log2 (BR)+ BS * log2 (BS) +BR+BS

Oprateur de jointure

Jointure avec index:

Une des relations (R1) est indexe sur lattribut de jointure, il suffit de balayer la deuxime relation et daccder au fichier indexe pour chaque tuple. Le cot est de lordre 3*CARD(R2), en supposant 3 accs en moyenne pour trouver un article dans le fichier index Les 2 relations sont indexes sur les attributs de jointure, il suffit de fusionner les 2 index. Lalgorithme est peu coteux en E/S.

Vous aimerez peut-être aussi