You are on page 1of 114

Bases de Données Avancées

2011-2012

KHCHERIF Raoudha Raoudha.khcherif@topnet.tn Bureau 109

Plan


Rappel Optimisation des requêtes Gestion des Transactions et Gestion de concurrences Bases de données reparties

Rappel: Introduction

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.

. Administration des données uniforme. Intégrité des données et sécurité des accès. Concurrence des accès et reprise sur panne.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.

Un schéma est une description d’un ensemble de données. Chaque relation a un schéma. intégration de données hétérogènes. qui décrit ses colonnes. Les modèles semi-structurés se cherchent une place dans les applications web. table avec tuples et des colonnes. Les modèles objet et objet-relationnel sont utilisés pour gérer des données complexes. Concepts de base: relation. … . s’appuyant sur un modèle de données.Modèle de données         Un modèle de données est un ensemble de concepts sur les données. Le modèle relationnel est le plus répandu.

des données. . Le schéma physique décrit la structure physique.    Les vues décrivent comment l’utilisateur voit les données. un schéma conceptuel et un schéma physique. de stockage.Niveaux d’abstraction  Plusieurs vues. Le schéma conceptuel définit la structure logique des données.

Gestion de la confidentialité VIII .Standards II.Gestion des pannes VI .Concurrence d’accès VII .Optimisation des questions .Indépendance Physique X . Objectifs des SGBD I.Indépendance Logique III – Langage de manipulation IX .2.Gestion des vues V .Gestion de la cohérence BD IV .

  Meilleure portabilité des applications et indépendance vis à vis du matériel. Ecriture des applications par des non-spécialistes des fichiers et des structures de stockage.Indépendance Physique  Indépendance des programmes d'applications vis à vis du modèle physique :  Possibilité de modifier les structures de stockage (fichiers. index.I . . …) sans modifier les programmes. chemins d'accès.

Médicament Nom Aspegic 1000 Fluisédal Mucomyst ……. 1 2 ….M 1 2 3 …. ……………………………. Posologie 1 par jour 10 gouttes ………… Médicament Description ……………………………. …………………………….V 1 1 …. Prénom Jacques Zoe …….... . Description ……………………………. Nom Lebeau Troger Doe Perry ……. Nom Dupont Durand Masse ……. Ligne 1 2 …. . ……………………………. .P Nom Lebeau Troger ……. ……………………………. …………………………….M 12 5 …. . . Id-M 12 5 8 12 3 …. Id-M 1 2 3 …. ……………………………. Patients Id-P 1 2 3 4 ….. Id . Nom Aspegic 1000 Fluisédal Mucomyst ……...Indépendance Logique Gestion des médicaments Nombre_Médicaments IdM 1 2 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 août 13 juillet 1 mars Prix 250 180 350 250 1 1 2 2 2 ….. Nom Aspegic 1000 Fluisédal Mucomyst ……..P 2 3 Id .V 1 4 Date 15 juin 1 mars Prix 250 250 Id .. 20 230 …. Les applications peuvent définir des vues logiques de la BD Cabinet du Dr.II . Docteur Id-D 1 2 3 …. ……………………………. Description …………………………….. Id . Nombr e 30 Patients Id . ……………………………. Masse Prescription Visites Id ... Prénom Jacques Zoe John Paule …….D 1 2 Id . ……………………………. Prénom Pierre Paul Jean …… Id-V Prescription Ligne 1 2 1 2 3 ….

 Possibilité d'intégrer des applications existantes sans modifier les autres.  . renommage de champs. ajout de relation. Possibilité de limiter les conséquences du partage : Données confidentielles. Possibilité d'évolution de la base de données sans réécriture des applications :   ajout de champs.Avantages de l’indépendance logique  Possibilité pour chaque application d'ignorer les besoins des autres (bien que partageant la même BD).

Manipulation aisée  La manipulation se fait via un langage déclaratif  La question déclare l’objectif sans décrire la méthode   Le langage suit une norme commune à tous les SGBD SQL : Structured Query Langage   Sémantique  Logique du 1er ordre ++ Syntaxe (aperçu !)  SELECT <structure des résultats>   FROM <relations> WHERE <conditions> .III .

. .IV – Des vues multiples des données     Les vues permettent d’implémenter l’indépendance logique en permettant de créer des relations virtuelles Vue = Question stockée Le SGBD stocke la définition et non le résultat Exemple :  la vue des patients parisiens  la vue des docteurs avec leurs patients  La vue des services statistiques  ..

.V –Exécution et Optimisation  Traduction automatique des questions déclaratives en programmes procéduraux :  Utilisation de l’algèbre relationnelle Optimisation automatique des questions  Utilisation de l’aspect déclaratif de SQL  Gestion centralisée des chemins d'accès (index. …)  Techniques d’optimisation poussées   Economie de l'astuce des programmeurs  milliers d'heures d'écriture et de maintenance de logiciels. hachages.

VI .Intégrité Logique    Objectif : Détecter les mises à jour erronées Contrôle sur les données élémentaires  Contrôle de types: ex: Nom alphabétique  Contrôle de valeurs: ex: Salaire mensuel entre 1 et 5MD Contrôle sur les relations entre les données  Relations entre données élémentaires:  Prix de vente > Prix d'achat  Relations entre objets:  Un électeur doit être inscrit sur une seule liste électorale .

Contraintes d’intégrité  Avantages :  simplification du code des applications  sécurité renforcée par l'automatisation  mise en commun des contraintes Nécessite :  un langage de définition de contraintes d'intégrité  la vérification automatique de ces contraintes  .

Intégrité Physique  Motivations : Tolérance aux fautes  Transaction Failure : Contraintes d'intégrité. Annulation  System Failure : Panne de courant.  Media Failure : Perte du disque  Communication Failure : Défaillance du réseau Objectifs :  Assurer l'atomicité des transactions  Garantir la durabilité des effets des transactions commises Moyens :  Journalisation : Mémorisation des états successifs des données  Mécanismes de reprise   .. Crash serveur .VII ..

Transaction Incohérence possible. Etat cohérent Begin Transaction Etat cohérent Commit Begin CEpargne = CEpargne ..3000 CCourant = CCourant + 3000 Commit T1 ..

le SGBD n’a pas conscience de la sémantique des données (ex.Transaction: Exécution d’un programme au dessus d’une BD  Concept clé : transaction..  Le fait qu’une transaction préserve la cohérence de la BD est au bout du compte de la responsabilité de l’utilisateur!  .  En dehors de ça. une séquence atomique d’actions sur une BD (lectures/écritures) séparant un commit ou un rollback du commit ou du rollback suivant. il ne comprend pas comment les intérêts d’un compte bancaire sont calculés).  Les utilisateurs peuvent spécifier des contraintes d’intégrité simples sur les données et le SGBD se charge de les garder inviolables. Chaque transaction doit laisser la BD dans un état cohérent après l’avoir prise dans un état cohérent.

une des deux. Tn} soit équivalente à une exécution en série T1’ . disons Ti.) Idée: Si une action de Ti (ex. .. . chaque transaction demande à émettre un verrou sur l’élément et attend que le SGBD lui accorde ce verrou. cette façon de faire permet d’ordonner les transactions. Tous les verrous sont relâchés à la fin de la transaction (protocole V2P strict.Ordonnancement et concurrence des transactions  Les SGBD assurent que l’exécution de {T1.. obtient le verrou sur X la première et Tj est forcée à attendre la fin de Ti.    Avant de lire/écrire un élément.. écrire X) affecte Tj (qui effectue une lecture sur X)... 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! . Tn’.

La transaction doit faire passer la base de donnée d'un état cohérent à un autre. Les modifications d ’une transaction validée ne seront jamais perdue  Cohérence   Isolation   Durabilité  .Propriétés des transactions  Atomicité  Unité de cohérence : toutes les mises à jour doivent être effectuées ou aucune. Les résultats d'une transaction ne sont visibles aux autres transactions qu'une fois la transaction validée.

l’action est tracée dans un log file.Atomicité   Les SGBD assurent l’atomicité (tout ou rien) même si un crash surgit au milieu d’une exécution de transaction. Après un crash. . 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. les effets d’une exécution partielle d’une transaction sont défaites à l’aide du fichier log.

Atomicité et Durabilité ATOMICITE Panne Begin CEpargne = CEpargne .3000 CCourant = CCourant + 3000 Commit T1 CCourant = CCourant + 3000 Commit T1 Crash disque  Annuler le débit !!  S’assurer que le a été fait ! virement .3000 DURABILITE Begin CEpargne = CEpargne .

VIII - Partage des données

BD

• Accès concurrent aux mêmes données
Conflits d’accès !!

Isolation et Cohérence

BD

• Le SGBD gère les accès concurrents
 Chacun à l’impression d’être seul (Isolation)  Cohérence conservée (Pas de maj conflictuelles)

IX – Confidentialité

Objectif : Protéger les données de la BD contre des accès non autorisés Deux niveaux :  Connexion restreinte aux usagers répertoriés (mot de passe)  Privilèges d'accès aux objets de la base

Usagers : Usager ou groupe d’usagers
Objets : Relation, Vue, autres objets (procédures, etc.)

SQL3) Communication SQL CLI (ODBC / JDBC) Transactions (X/Open DTP. OSI-TP)  Force des standards    Portabilité Interopérabilité Applications multisources… .Standardisation  L’approche bases de données est basée sur plusieurs standards    Langage SQL (SQL1.X . SQL2.

Architecture Fonctionnelle de Référence Requête ANALYSEUR Analyse syntaxique Analyse sémantique Gestion des schémas Modification de requêtes Contrôle d'intégrité Contrôle d'autorisation Ordonnancement Optimisation Élaboration d'un plan Exécution du plan Méthodes d'accès Contrôle de concurrence Atomicité des transactions META-BASE TRADUCTEUR OPTIMISEUR Plan d'Accès EXECUTEUR BD .

Architecture des SGBD  Les architectures physiques de SGBD sont très liées au mode de répartition. — BD centralisée — BD client/serveur — BD client/multi-serveurs — BD répartie — BD hétérogène — BD mobile .3.

Architecture centralisée Terminaux passifs réseau Appli 1 Appli 2 Appli n Mainframe SGBD données .

Architecture client-serveur Clients intelligents Appli 1 Appli 2 Appli n réseau serveur SGBD code données .

Architecture Client-Multiserveurs Appli 1 SQL SQL ODBC SQL ODBC SQL SGBD 1 code données code SGBD 2 données .

Architecture répartie Appli 1 Appli 2 Appli n SGBD 1 code données code SGBD 2 données .

Architecture mobile Clients intelligents mobiles Données répliquées et/ou personnelles Réseau sans fil serveur SGBD code données .

réservation en ligne ...Applications traditionnelles des SGBD   2 grandes familles de serveurs de BDR OLTP (On Line Transaction Processing)  Cible des SGBD depuis leur existence    Banques. Data Mining …   Faible nombre de transactions Transactions très complexes . Très grand nombre de transactions en parallèle Transactions simples  OLAP (On Line Analytical Processing)  Entrepôts de données .

Evolution des BD BD BD BD ‘light’ PicoDBMS d’entreprise personnelles (PDA / Tél.) carte à puce Capacité Prix Nombre .

L’optimisation des requêtes .

Introduction    Performances des requêtes : talon d'Achille des BDR Tout SGBDR comprend un optimiseur qui lui donne un meilleur contrôle les performances Comment améliorer les performances d'une requête?    Comprendre la traduction  SQL  opérations sur tables Connaître  l‘utilisation des index  les algorithmes qui implantent les opérations sur tables Comprendre le choix de stratégie de l’optimiseur .

Architecture en couche d’un SGBD .

le processeur accède aux données spécifiées par la requête et réalise le calcul nécessaire. Décomposition des requêtes en séquences d’opérations élémentaires .A  EXECUTEUR Exécution. le SGBD procède a l’optimisation.Traitement de requêtes relationnelles Requête  Le processeur de requêtes assurent les fonctions suivantes:  ANALYSEUR Analyse syntaxique et éventuellement sémantique des requêtes afin de vérifier leur validité. c a d rechercher la décomposition qui conduit a un temps d’exécution minimal META-BASE TRADUCTEUR  OPTIMISEUR P. BD . au cours de cette phase.

Décomposition optimale d'une requête  Analyse syntaxique Analyse sémantique   Optimisation algébrique  Plan d'exécution logique (arbre algébrique)  Optimisation globale  Plan d'exécution physique .

des index.Paramètres utilisés  Schéma de la BD : schémas des tables et des chemins d'accés Statistiques : taille des tables. distribution des valeurs Algorithmes mis en oeuvre   .

Optimisation statique vs dynamique  Statique  décomposition et optimisation n'ont lieu qu'une seule fois sans tenir compte des modifications intervenues dans la BD  Dynamique  recherche de la meilleure stratégie à chaque exécution de la requête au dépend des performances Mise à jour de l'optimisation si les statistiques indiquent des changements importants  Hybride  .

Optimisation :??? .

Le problème : Équivalence sémantique .

Objectifs de l’optimisation   Trouver le meilleur plan d’exécution …. MEILLEUR ??? Donnant les résultats le + vite ….  Optimisation pour le temps de réponse ( response time)  Minimisant la consommation de ressources  Optimisation du travail total (Total work)  Minimisant le temps de délivrance des premiers tuples  Optimisation de la latence (Latency /First tuples …) .

Le module qui remplit cette fonction : Optimiseur de requêtes  La conception d’un optimiseur est une tache difficile et importante a la quelle les concepteurs de SGBD donnent beaucoup d’importance Impact sur les performances du SGBD et sur le temps de réponse des requêtes  La capacité du SGBD a traiter rapidement les requêtes dépend de l’efficacité de l’optimiser a choisir le meilleur plan d’exécution.  Libérer le programmeur de la connaissance du fonctionnement des opérateurs . temps de calcul. E/S disques et éventuellement les communications réseaux.Importance de l’optimiseur dans un SGBDR    Évaluation efficace d’une requête relationnelle:  Le SGBD doit évaluer un certain nombre de stratégies (Plan d’exécution) potentiellement efficaces pour traiter la requête  Choisir celle qui optimise l’utilisation des ressources de la machine telle que :  Espace mémoire.

produire le même arbre algébrique !    En plus cet arbre doit être le meilleur ! Seuls les concepteurs de SGBD ( noyau) doivent comprendre l’optimisation et l’exécution Dans la pratique :  2 requêtes équivalentes ne donnent pas toujours le même plan  Le plan n’est pas toujours le meilleur !  l’utilisateur (concepteur de l’application ) devra comprendre !!! .Les acteurs de l’optimisation Idéalement :  2 requêtes équivalentes en SQL ( langage déclaratif) doivent. après l’optimisation.

Les composants de l’optimiseur  Le travail de l’optimiseur est souvent décomposé en deux phases:  Phase 1 : optimisation logique. La réécriture simplifie le travail de l’optimisation physique en effectuant un premier ordonnancement  Phase 2: optimisation physique. phase principale de tout processus d’optimisation    Elle prends les décisions liées aux informations sur le placement physique des données Générations des plans d’exécutions candidats Choix du meilleur plan dont l’évaluation est la moins coûteuse. par exemple qui s’exécute en un minimum de temps . appelée aussi réécriture  Optimisation indépendante du coût d’exécution: elle est basée sur des transformations algébriques de la requêtes d’origine.

Optimisation logique   L’optimisation effectuée dépend essentiellement de l’ordre des opérateurs apparaissant dans arbre algébrique Effectuer un premier ordonnancement des opérations: transformations algébriques   Reposent sur le concept d’expression algébriques équivalentes Réalisent prioritairement les opérations de sélection :  c1 et c2(R)=c1( c2(R))=c2( c1(R)) Combinent une sélection et un produit cartésien en un opérateur de jointure  c(RS)= RcS Regroupent les séquences d’opérateurs unaires tels que sélections et projections et insèrent les opérateurs unaires dans les opérandes d’opérateurs binaires  c(RS)=c(R)S  c1 et c2(RS)=c1(R)   c2(S) Recherchent les sous expression identiques qui apparaissent plusieurs fois dans une expression algébrique    .

Arbre algébrique  A partir d’une requête analysée. la plupart des SGBD génère un arbre algébrique (ou plan d'exécution physique)     noeuds terminaux : relations noeuds intermédiaires : opérations relationnelles noeud racine : résultat arcs : flux de données .

CRU. CRU = V n PROJECTION "BEAUJOLAIS" V. V. V.MILL n JOINTURE A. NV = A V n DIFFERENCE V. V.CRU.CRU n TRI V.AVG(DEGRE) V. NV V V B1 — B2 n AGREGAT n PRODUIT CARTESIEN n UNION COUNT(*).Arbre algébrique n RESTRICTION V.MILL  B1 B2 B1 U B2 V .NV.

NOMP.REGION)  Aconsommer (NC. C.NOMP= « P1 » Coût d'exécution:    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.DATE.NOM.NC = A.DATE < 08-08-07 P.REGION.ADRESSE.PRENOM A.NP.NOM.QUANTITE)  Produit(NP. AVANT LE 8 AOUT 2007"  RESULTAT C.NC PRODUIT P = C.NP = P.CHOIX)  REQUETE : "NOM ET PRENOM DES COSOMMATEURS PARISIENS AYANT COSOMMER DU « P1 » .PRENOM.NP     C.VILLE "PARIS" ACONSOMMER A CONSOMMATEUR C .EXEMPLE D'ARBRE Consommateur (NC.

nomRôle) Pays (code. annéeNaissance) Role (idActeur. résumé. genre. idFilm. prénom.Exemple BD Films     Film (idFilm. année. titre. nom. nom. langue) . codePays) Artiste (idArtiste.

Traitement des blocs    il y a autant de plans d’exécution que de «blocs » dans une requête. L'optimiseur se concentre sur un bloc à la fois Pour optimiser l'exécution : limiter le nombre de blocs imbriqués .

nom = ’Stewart’ AND A.idFilm AND R. Artiste A WHERE A.Exemple requete 1 avec 1 seul bloc Exemple : afficher tous les films avec James Stewart.idActeur = A.annee = 1958  Un seul bloc . Role R. parus en 1958 SELECT titre FROM Film F.idFilm = R.prenom=’James’ AND F.idArtiste AND F.

Role R WHERE F.idActeur IN (SELECT idArtiste FROM Artiste WHERE nom=’Stewart’ AND prenom=’James’) 2 blocs .idFilm = R.annee = 1958 AND R.idFilm AND F.Exemple requete 1 avec 2 blocs SELECT titre FROM Film F.

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 coûteux .

restriction et projection ... propriétés des opérateurs algébriques Consiste à réorganiser les opérations de la requête  Problème :  suivant l'ordre des opérateurs algébriques dans un arbre. le coût des opérateurs varient en fonction du volume des données traitées i.Restructuration algébrique   Basée sur des règles de réécritures. plus les coûts cpu et d'E/S sont minimisés 2.g. le coût d'exécution est diffèrent  Pourquoi?   1.e. certains opérateurs diminuent le volume des données e. plus le nombre de tuple des relations traitées est petit.

Règles 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 différences (8) Distributivité des projections / unions .

Commutativité des Jointures/Produit cartésien R S S <==> X X R R1 R2 R2 R1 .

T R R S S T .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 <==> .

mais les attributs utilisés dans la suite doivent être conservés !!! A1. A1. … Ap A1.Semi-commutativité des Projections  Il est possible de descendre les projections. … Ap Ai = a Ai = a Ai.… Ap .

.. Bj...) X Ai = vi R1 (.Semi-commutativité des restrictions et jointures Ai = vi <==> X R2 (. Ai.) R1 (..) .. Ai..) R2 (. Bj..

Bj..Semi-commutativité des restrictions et jointures A1 = vi <==> A1 = vi R2 (.....) R1 (. Ai. Bj..) . Ai.) R2 (...) R1 (.

) R2(.Ap R1(..AI..AI.Ap <====>   A1.) R2(.AI..) .AI..Commutation des projection avec les unions A1.....) R1(..Ap A1...

une seule projection. différences et jointures reste inchangé !!! . 5. ou une sélection suivie par une projection. 5 et 7) Pour chaque projection. Utiliser la règle (3) pour décomposer une sélection comportant plusieurs prédicats en une séquence de sélection Pour chaque sélection déplacer les sélections aussi bas que possible dans l’arbre (règles 4. déplacer les projetions aussi bas que possible dans l’arbre (règles 4. les regrouper et éliminer des éventuelles projections inutiles ai auraient pu apparaître ( projection sur tout les attributs) 1. projection) puis les opérations binaires Pour considérer les arbres de flux de données minimum. 2. 6 et 8) Combiner les séquences de sélections et de projections en une seule sélection. déplacer les sélections et les projections vers le bas Si deux projections successives portent sur une même relation. L'ordre des unions.Algorithme d’optimisation d’une expression de l’algèbre relationnelle    Exécuter tout d’abord les opérations unaires (sélection. 4. 3.

C.NC.NOM.NC.NOM.NP = P. C.DATE > 01-01-83 P  C.NP C. C. A.NP P.PRENOM A.NC  = P.PRENOM.A. C.NP C.PRENOM  Coût d'exécution: 10 m + 1m * 100000 + 1 m * 1000 + … de l'ordre de 10 ** 11 comparaisons de tuples ! A.VILLE = "PARIS" C A .NOM.NC A.NOMP « P1" = A.Exemple d'Arbre Optimisé Résultat C.NP C.

Optimisation physique   L’optimisation logique est insuffisante pour un plan d’exécution de coût minimal  Optimisation physique Recherche d'un plan d'exécution physique combinant des opérateurs physiques (chemins d’accès et traitements de données) .

Plan d'exécution physique dépend  des chemins d'accès qui restreignent le choix d'opérations physiques pour une opération logique donnée  des statistiques  du nombre de pages en mémoire centrale .

Algébrique/Physique  Une opération algébrique peut donner plusieurs opérations physiques  Exemple : jointure par boucles imbriquées  Plusieurs opérations algébriques peuvent être implantées par une seule opération physique  Exemple : sélection et projection peuvent être réalisées par un seul parcours séquentiel .

Plan d'exécution physique  Liste ordonnée d'opérateurs physiques avec chemins d'accès aux tables et index et indication de tri d'une table  Représenté par un arbre   Feuille : chemins d'accès aux tables et index Noeud : opération physique .

Accès par adresse 3. Parcours d’index 4.Chemins d'accès  Ils dépendants des organisations de fichiers existantes :     1. Balayage séquentiel 2. Accès par hachage .

Plan optimal   L'optimiseur compare une estimation de coût des opérations Pour une sélection Att>a avec un index sur Att. sont comparées une estimation par balayage séquentiel et une estimation par parcours de l'index .

nom='ITALY' 4  Jointure Boucles Imb Italy 2 Sélection Avec index sur codePays : ind_codePays dans Film 3 Index (range scan) ind_codePays 1 Acces séquentiel Pays .code AND Acces par adresse Film P.titre FROM Film F.codePays = P. Pays P 5 WHERE F.Représentation arborescente – Exemple 6 Projection SELECT F.

Algorithmes  On a généralement le choix entre plusieurs algorithmes pour effectuer une opération algébrique    Sélection Tri Jointure .

Algorithmes de SELECTION  SELECTION ou recherche dans un fichier par :  Balayage séquentiel Accès par adresse ou  .

Parcours séquentiel

En général le fichier n'est pas trié sur l'attribut de sélection :

On lit le fichier bloc par bloc Quand un bloc est en mémoire, on traite les enregistrements qu’il contient

Accés direct

Opération en deux étapes :

on obtient (avec un index) l’adresse des enregistrements ou du bloc à parcourir avec cette adresse on va parcourir le bloc, pour y lire l’enregistrement

Exemple

 

Le fichier occupe 500 blocs, une lecture de bloc prend 0,01 s (10 millisecondes). Un parcours séquentiel (ou la moitié pour une recherche par clé) prendra 5 secondes Une recherche par index nécessite 2 ou 3 accès pour parcourir l’index, et un seul accès pour lire l’enregistrement :

4x0.01=0.04s=40 milisecondes

Utiliser les index?     Si la recherche est sur une clé : oui Sinon se poser les questions suivantes : 1. Quelle est la sélectivité (pourcentage des lignes concernées) de la recherche ? . Le critère de recherche porte-t-il sur un ou sur plusieurs attributs ? S’il y a plusieurs attributs. les critères sont-ils combinés par des and ou des or ? 2.

Sélectivité d'un attribut  A attribut de la table R  Sel(A.R) =pourcentage de tuples de R qui ont la même valeur pour l'attribut A  Ne pas créer d'index à sélectivité trop faible .

   SELECT * FROM Film WHERE idFilm = 20 OR titre = ’Vertigo’  On ne passe pas par l’index. SELECT * FROM Film WHERE idFilm = 20 AND titre = ’Vertigo’. On passe par l’index. .Exemple On suppose qu’un index a été créé sur idFilm.

Algorithmes de TRI  Utilisés pour     les ORDER BY les algorithmes de jointure (sort/merge) l’élimination des doublons (clause DISTINCT) les opérations de regroupement (GROUP BY) .

Algorithmes de JOINTURE  sans index sur l'attribut de jointure    jointure par boucles imbriquées jointure par tri-fusion jointure par hachage  avec index sur l'attribut de jointure (sur une des 2 tables)  jointure par boucles indexées .

Jointure par boucles imbriquées   à 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 imbriquées pour de grosses tables R joint A=B S    Trier R sur A Trier S sur B Fusionner les deux tables triées .

encore peu répandu Très efficace quand une des deux tables est petite Nécessite d'avoir des statistiques .Jointure par hachage    Algorithme récent.

si la page contient des tuples de R2. pour chaque tuple de R2. on les joint   . on consulte la page indiquée par H .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 séquentiellement la deuxième table R2 .

on utilise l’index sur l'attribut de jointure de R2 pour trouver les tuples de R2 qui satisfont la condition de jointure  Très efficace (un parcours et des recherches par adresse) .Jointure avec un index  Boucles imbriquées indexées   On balaye la table non indexée R1 Pour chaque tuple de R1.

Estimation du coût et choix des algorithmes   L'optimiseur compare une estimation des côuts pour les opérations L'estimation du coût d'une opération physique utilise un modèle de coût qui dépend de    l'algorithme la taille des relations la sélectivité des attributs .

Balayage séquentiel au lieu de parcours d’index si la sélectivité est faible.   1.  . par exemple.Statistiques Elles permettent d’ajuster le choix de l’algorithme. Boucles imbriquées simples si les relations sont petites 2.

.Objectifs Dans l’hypothèse d’une base centralisée. Soit on cherche à minimiser le temps globald’exécution (exemple d’une application batch). Stratégies :     Soit on cherche à obtenir le premier enregistrement le plus vite possible (exemple d’une application interactive). on cherche essentiellement à limiter le nombre d’entrées/sorties.

Optimisation de requêtes (Schémas) Requête (Declarative) Optimisation logique Optimisation physique Réécriture Requête (Algebrique) Générateur de Plans Stratégie de Recherche Modèle de coût Espace de Recherche Estimateur de tailles Méthodes d’implantation Plan d'exécution Optimal .

Solution possible:    Générer tous les plans Estimer le coût de chacun Choisir celui du moindre coût. Éliminer a priori tous les plans qui font appel a des produits cartésiens Éliminer tous les plans qui n’effectuent pas les sélections des que possible  Mais le nombre de plans est très grand   . Aussi l’application d’une sélection initiale peut faire perdre un index qui serait utile pour exécuter une jointure.Optimisation physique des requêtes   La restructuration algébrique est insuffisante car elle n’ordonne pas les opérations binaires.

Elles se basent sur des informations statistiques maintenues dans le catalogue  Estimation des tailles des résultats intermédiaires  Stratégie de recherche:   Décrit les plans d’exécution qui sont explorés et dans quel ordre. par exemple le nombre d’E/S disque. Produit le meilleur plan d’exécution relativement a l’ensemble des plans examinés. qui associe une valeur ou un vecteur de valeurs a chaque plan Ces valeurs sont des estimations de diverses caractéristiques de l’exécution du plan. l’optimiser a besoin d’un modèle de coût. .Optimisation Physique de requêtes  Optimisation physique de requêtes dans les SGBD est modélisée selon 3 composantes:   Espace de recherche : décrit de façon abstraite l’ensemble des plans d’exécution alternatifs pour représenter la requête a optimiser (espace des possibilités=espace de tous les plans possibles) Modèle de coût/ fonction de coût: prédire le coût d’un plan d’exécution    Pour comparer les plans d’exécutions.

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 d’une restriction (R) est alors calculé par la formule: CARD((R)) = s(critère)*CARD(R) . placement…) qui change directement ces coûts.  Le modèle simple est celui qui suppose l’uniformité de la distribution des valeurs et l’indépendance des attributs.Modèle de coût  Nécessite la connaissance :   Taille des résultats intermédiaires de toutes les opérations considérées Prise en compte des chemins d’accès aux relations (index. Un tel modèle nécessite de connaître au minimum:      Le nombre de valeur d’un attribut A noté CARD(A) Les valeurs minimum et maximum d’un attribut A.

Facteur de sélectivité s(critère) désigne la probabilité que le critère soit vérifié appelé aussi facteur de sélectivité ou prédicat de restriction  Coefficient associé a une table représentant la proportion de tuples de la table satisfaisant la condition de sélection. .

.s(P) * s(Q) s( not P) = 1 .min(A)) / (max(A) . hachage ou balayage).Sélectivité des Restrictions  TAILLE (s(R)) = s * TAILLE(R) avec: s (A = valeur) = 1 / NDIST(A) s(A > valeur) = (max(A) .s(P)  Le coût dépend de l'algorithme (index.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) .valeur) / (max(A) .min(A)) s(A < valeur) = (valeur .

. La probabilité de doubles peut être estimée en fonction du nombre de valeurs distinctes des attributs composant X.Sélectivité des projections  Le nombre de tuples d’une projection sur un groupe d’attributs X est plus simplement donnée par la formule: CARD((R))=(1-d)*CARD(R))  Avec d = probabilité de doubles.

produit des tailles si boucles imbriquées.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.Sélectivité des jointures  CARD( R1  R2) = p * CARD(R1) * CARD(R2)  p dépend du type de jointure et de la corrélation des colonnes :  p = 0 si aucun tuple ne joint  p = 1 / MAX(NDIST(A). .

les optimiseurs modernes sont construits comme des générateurs de plans couplées a une stratégie de recherche découlant des techniques d’optimisation de la recherche opérationnelle Procédure utilisée par l’optimiseur pour explorer l’espace des plans d’exécutions afin de déterminer un plan de coût proche du minimum possible. afin d’éviter de les explorer tous. .Stratégies de Recherche   Le nombre de plans d’exécution possibles peut être très grands pour des questions complexes.

Différentes Stratégies Stratégie de recherche Enumérative Aléatoire Exhaustive Augmentation Amélioration itérative Recuit simulé Génétique .

 Stratégies aléatoires  Explorent aléatoirement l’espace des plans    L’amélioration itérative: tire au hasard n plans et essaie de trouver pour chacun d’eux le plan optimum le plus proche. . L’optimum des plans localement optimum est alors retenu comme plan d’accès La stratégie du recuit simulé procède a partir d’un plan qu’on tente d’optimiser en appliquant les transformations successives. Stratégie génétique: visent a fusionner deux plans pour en obtenir un 3eme.Stratégies de recherche  Stratégies énumératives:  Énumèrent systématiquement des plans possibles   Stratégies exhaustives: les énumèrent tous Stratégies 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 général les produits cartésiens et appliquera des que possible restriction et projection. Les transformations retenues améliorent le plan exceptées quelques unes introduites afin d’explorer un espace plus large.

c'est-à-dire d'un arbre annoté par des choix d'algorithmes. Annotation:  Marque associée à un noeud indiquant l'algorithme à utiliser pour l'opérateur avec ses paramètres (index. Nécessité de développer un modèle de coût général permettant d'évaluer le coût d'un plan.Problème d’ordonnancement    Il faut pouvoir ordonner les jointures. union différences en fonction des tailles des relations arguments. …) . hachage.

. etc.Optimisation physique  Choix des meilleurs algorithmes pour les opérations relationnelles   Utilisation des indexs jointure par index .. Structures de données existantes Statistiques sur les relations Algorithmes existants  En fonction de    .

Modèles de coût   Estimation du coût : nombre d'accès à des pages (blocs) sur disque Variables    Nombre d'enregistrements d'une table Nombre de pages occupée par une table sur disque Mémoire 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) .

Condition d'inégalité sur un index secondaire en arbre B+ . Condition d'égalité sur la clé primaire 4. Recherche binaire (fichier trié) sans index 3. Condition d'inégalité sur la clé primaire 5. Parcours séquentiel (fichier non trié) sans index 2. Condition d'égalité sur un index secondaire 6.Stratégies pour une sélection sur un attribut       1.

Sélection A=a sans index sur A Parcours séquentiel sur fichier non trié :   estimation du coût : B estimation du coût : B/2 pour un attribut clé 2. Sélection A=a sans index sur A Recherche binaire sur fichier trié sur A:  estimation du coût : log2(B) .Coût d'une stratégie de sélection 1.

Condition d'inégalité sur la clé primaire K Selection K>k (ou K<k)  nNiveauxK(I)+B/2 (si distribution uniforme des valeurs de K) . index primaire I  estimation du coût : nNiveauxK(I)+1 4. Condition d'égalité sur la clé primaire K Selection K=k .Coût d'une stratégie de sélection 3.

Condition d'égalité sur la clé secondaire B Selection B=b estimation du coût : nNiveauxK(I)+CSB(R)/Fb  6. Condition d'inégalité sur un index secondaire I en arbre B+ Selection B>b estimation du coût : nNiveauxI(I)+ nBlocsFI(I)/2 +N/2 .Coût d'une sélection 5.

B alors Ecrire(Resultat.B) { RT=TRIER(R.tuple1||tuple2).A. ST=TRIER(S.A.A).Opérateur de jointure Jointure Sans Index:  Boucles imbriquées  Tri fusion  Hachage Boucles_Imbriquees(R.A=tuple2.Tuple1) Pour chaque tuple de S faire {Lire(S. Resultat=FUSIONNER(RT.S.ST) } Cout en E/S= Page(R1)*LOG(Page(R1)) + Page(R2)*LOG( Page(R2)) + Page(R1)+ Page(R2) } } } Cout en E/S= Coût : BR +BR *BS Coût : BR * log2 (BR)+ BS * log2 (BS) +BR+BS .B) { Pour chaque tuple de Rfaire { LIRE (R.B). si tuple1.S. Tri_Fusion (R.Tuple2).

il suffit de fusionner les 2 index. en supposant 3 accès en moyenne pour trouver un article dans le fichier indexé Les 2 relations sont indexées sur les attributs de jointure. Le coût est de l’ordre 3*CARD(R2). . il suffit de balayer la deuxième relation et d’accéder au fichier indexée pour chaque tuple.Opérateur de jointure  Jointure avec index:    Une des relations (R1) est indexée sur l’attribut de jointure. L’algorithme est peu coûteux en E/S.

94346:0 5928.0 892.07.0/0 #0.9F0/0 #0.943586:0 #FF.79:70 #06:H90 0-76:0 F3F7.F2.943 !.943/0706:H908 $.5928.39..7.07.9.4P9 85.08 F94/08/ 25.3/ 0F.90:7/0 !. ..90:7/0 9.38 $97.8 #06:H90 0.0 5928.:943 592.0 4/G0/0.

80845F7.9:0395..9:7.9 :9054:70F.55.0:/:243/70.386:3 0110.390.70507/70:33/06:807.4P9/0.5928.70897:..8088F0.9438-3.79F8038 A230794:8085.:3 487.:907:30439:70  $4:9435488-0    F3F70794:8085.550.943 / :308F0.3808997G87.708 :88 .3/   ../08574/:98 ..F-76:008938:118.050:91.9438/086:0 5488-0  .38 892070.80342-70/05.386:1439.574794:8085.700 3 47/43305..943586:0/08706:H908   .94339.4P9 A2307.943.

9073.5928.0/070.943!86:0/0706:H908  5928.79/01.07..-897.3908   85.38 / 0F.0/F.0/094:8085.90 03802-0/085.0/08 5488-9F8085.4P9.4592807 085.943586:0/0706:H908/.3808$08924/F8F0 8043.43..706:H90.42548..:943.385488-08 4/G0/0.91854:77057F803907.

...4P9 6:..3 08.7002500342-70/ .884.9438/0/.143.9F7896:08/0 0F.425.3/ 0F.07808.90:7/0..-0843/ :324/G0/0 .:9438  4592807.3 5.707085.:943    !4:7.0:78.0:788439/080892.0:30.7.4P9/ :35.6:05.0:74::3.943/0.0...38/ 0F.4P957F/700.:943/: 5.

708  $97.23F8 .943/089.4:0  892.$/86:0 0880-.02039.:94370.07..08/087F8:9.943889.79085.38 0.380.80398:7/0831472. 03802-0/085.3903:08/.38/ 0F.9.9.3/ 0F.0   F.386:047/70  !74/:90200:75.9896:082.9F0/070.:9436:84390547F809/.9839072F/.

0:7809 3/F503/.0/087F8:9..9839072F/.4P9  F.02039  6:..:70.42590/08.9439 # 089.0:78/893.4P98  024/G08250089.08890/0 ..79G70 # # ..0:78232:2092./897-:943 /08.0:6:8:55480 :314729F/0..9438.438/F7F08 !78003..9438 3/0 5.:F5.0238/ . 1472:0 # 9 # 8 .7.30/70.0/08..478.88..0:7/ :3.997-:9349F$%  0342-70/09:508/0.2:2/ :3.08.0   %..3.433..4/G0/0.08890.997-:9     0342-70/0.6:070.943#349F# #  0342-70/09:508/ :3070897.:232:2      0342-70/0.433.997-:98 &39024/G03F.708/094:9080845F7..L970.G8.997-:9349F#  08.902039.3..908/0.6:0..

981.90:7/08F0.-07057F8039.. .943  4011.039.943  ..9.-9F6:00.8.39.:881.550F.. 574547943/09:508/0.574-.90:7/08F0.9F4: 57F/.9.-08.9/070897.39.79G70 /F830.:309.79G70849 .9.F.F71F..43/943/08F0.9F 8 .884.

0.9F/08#0897.9..0:7 .. 8 .9438  % 8 # 8 % # .$F0.

$%  8 ..0:7  2..0:7 .   .

   23  8 .0:7 23  ... 2.0:7  .

 2..   23  8 890.0:78  .

04:-.4P9/F503//0 ...47920 3/0 .0:78 8 !09" 8 !  8 " 8 !4:" 8 !  8 "  8 !  8 " 8 349!  8 ! 0..0  ...$%   # 890.

943/:342-70/0 .0.997-:98.42548.9F/085740.39  .574-.-9F/0 /4:-0850:9H9700892F003143.9438  0342-70/09:508/ :305740.-9F/0/4:-08 .997-:980895:882502039 /433F05.908/08..9438:7:3 74:50/ .0:78/893.1472:0 # " #   / # #  .7./574-.9.$F0.

9. # 5 # #  # #  5/F503//:950/0439:7009/0.:.9F/08439:708  # #.443308  5 8.477F..943/08 .:39:5030439  5.$F0.

4P98   3F.7083/0  574/:9/089./.997-:98098:7:3 2H20/42.088-4:.0203908.082-76:F08 ...-0/08. $%  $%  8/897-:943 :314720F6:574-.79F803   .307.30  58574/:9..47920.

3/0.38/ 0F.07..907/00805470794:8 08459280:78 24/073088439.943300 !74.7 459280:754:7054707  085.4:.07.4220/08F3F7.425008 .$97.:9435488-0850:9H970 97G87.9F0/070.07.4:5F08.0 /F. 70.13 / F.13/0/F9072307 :35.0/085.:30897.39/0890.:9438.943/0.4P9574.36:08/ 45928.43897:98.0/:232:25488-0 .045F7.90:78/0 5.F/:70:98F05.9F08/0#0.3/854:7/086:089438.38.0   0342-70/05.38/ 0F.

:89.0 #0.943 2F47.943 9F7.0 F.:9 82:F F3F96:0 .9.0 3:2F7.07.9.9F08 $97.9F0 /070.9470 .11F703908$97.0 :2039.

5740..43897:80395747088.381472..30.9F080.0.07.556:.020390870..:982:F574.79.9F0/:70.7 00250/0.381472.G8 .:.94702039 085.08  A3:2G7039889F2.943870903:08.:2039.94308.F.390 00F.0/085.0754:7 .088.0970.94313.9.13/ 054707:3085.747/70/09..7488.7/35.8.3854:7034-9037:3020  .G/0.08 08 97.9F085.F.2F4703905.9F0F3F96:0.7.943  $97.385488-08   $97.47870903:.94708  547039.34592:205:8574.:89.9F08.8039.1:843307/0:5.907...02039035./086:05488-070897.38 4.9438 5.556:07.395.79F803809 .05:8.42205.395747088.0  $97.0/0974:.96:02039/085.2F47.9439F7.3/ .9.3809088.0  4592:2/085.$97..03F3F7.:3/ 0:05.9F08F3:2F7.897.94388:.943095740.5..009033974/:8.797/ :35..70 $97.08574/:98.059F086:06:08:308 3974/:908.020394592:2089.9F08/070.390897.36: 4390390 / 459280703.38     .0808F3:2G703994:8 $97.

:954:.08/0870.2G9708 3/0  .39 .:070.. 5072099.0889F/0/F.3 .76:0.7:20398 F.7-70.F0:3340:/3/6:.4P9/ :35.4/ . 089  /70 / :3.884.0.90:7.943/089..!74-G20/ 47/433.47920 :980754:7 45F7.7..3.4P9F3F7.7/08.4747/4330708439:708 :343 /11F703.0  .39/ F.943  ..045507:324/G0/0.9438 .0803143.479208 3349.02039    1.8085.3349F5.

3908 $9.5928.73/0 09.9896:088:70870.398  3143.9:708/0/433F08089.9433008   &98. $97:.47920854:708 45F7.9438 479208089.943870.943586:0  4/08200:78.943/083/08 439:705.943/0    .

084.-08      42-70/ 0370897020398/ :309..7:309.7..4/G08/0.08 -4.4P9342-70/ .-08:7 /86:0 F2470/8543-0033-70/05..08 .-0 42-70/05.G8/08 5.4P9 892.:5F05.943/:.8 8:7/86:0 '.

0.:8:7     3.8 10:08/0 3/02:9 3.0.0.7.0:7 /0 .7/ 42-70/0-4.84:# 42-70/03.:   34..:09342-70/0-4.43..997-:9/0#  $ # .039438 42-70/09:5084:#4:.8   42-702403/ 03708970203985.

70  43/943/ F.$97..F572..0734397F 8.43/.9F8:7:33/080.43/.383/0  43/943/ F.7-70       .997-:9  !.9F8:7:33/080.4:788F6:0390 1.07.0797F 8.9F8:7.7.383/0  #0.943 8:7:3.7003 .70  43/943/ 3F.9F8:7.F572.0-3.70 1.70  43/943/ 3F.9F0854:7:308F0.

4P9.9F0 /08F0.0734397F   0892.4P9/ :30897.943/:.8.7.383/08:7 !.4:788F6:03908:71.4P9 0892.943  $F0.943/:.943.

0-3.383/08:7 #0.F  $F0.997-:9.0797F8:7  0892.8.943.4P94  .54:7:3.07.943/:.708:71.

9F8:7.943 3/0572.4P9/ :30897.70  0892.0.:  .4P93.70 $00.:    43/943/ 3F..F572.943  43/943/ F.9F8:7.0..9F0 /08F0.F572.70 $00.943/:.943 4:  3.

 8/897-:943:314720/08 ..0:78/0 .

9430892.0.9F8:7.70 $00.4P9/ :308F0.43/.F80.943  43/943/ F.943/:.4P93..:  $ # .

7-70  $00.43/.943/:.8  .9F8:7:33/080.0.:  34.  43/943/ 3F.7003 .4P93.9430892.

 .

 .

383/0  4:.0 4:.9&$ # #% $% < 4:903.90:7/0439:70 439:70$.70 # # %:50 %7*:843 #  $   #%%## #   $%%## $   #08:9...5F7..082-76:F08  %71:843  .6:09:50/0#1.08*2-76:008 #  $  !4:7.

0 #   !.6:09:50/0$1.770 #08:9.9 9:509:50  < < < 4:903.0 #   !.0 # !.478 .0 # !4:7..$!.70 70 $ %:50  89:50 9:50 .0 #   !.0 #  !.

$4P9# # $ 4P9# 4 #  $ 4 $  # $ .

...5F7.:1.79.073/0F054:7.6:09:50  0...997-:98/0 439:70 8:119/01:843307083/0   .90:7/0439:70  439:70.073/0F 0870.39 .997-:9/0 439:70 8:119/0-.9438 # 0893/0F08:7 .4P90:03.4P9089/0 47/70 # # 038:5548./0:G2070.F/07.3/0    &30/0870.943884393/0F088:708.4792008950:.0/.07:3...943 09/ .0.38 01.G80324033054:7974:.07.

$ .