dans les bases de données relationnelles - lsis.org · optimisation des bd relationnelles –...

of 13/13
Optimisation des BD Relationnelles – Bernard ESPINASSE 1 Optimisation et performance dans les bases de données relationnelles Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Mars 2013 1. Evaluation de l'activité sur la base de données 2. Optimisation physique 3. Optimiseurs de requêtes 4. Optimisation logique : dénormalisation Optimisation des BD Relationnelles – Bernard ESPINASSE 2 Plan 1. Evaluation de l'activité sur la base de données 2. Optimisation physique Performance et structures de données : choix d'une organisation/méthode d'accès Compression des données Index secondaires Partitionnement, clustérisation 3. Optimiseurs de requêtes Optimiseurs de requêtes Statistiques sur l'état des tables 4. Optimisation logique : dénormalisation Problématique de la dénormalisation Regroupement de tables, Création de redondances d'attribut non clé, Ajout de clé étrangère redondante, Création de transitivité, Création de tables de jointure Optimisation des BD Relationnelles – Bernard ESPINASSE 3 1. Valorisation de l'activité des traitements sur la BD Transformation de sous-schémas conceptuels (SSC) en sous-schémas logiques (SSL) Valorisation des primitives logiques Optimisation des BD Relationnelles – Bernard ESPINASSE 4 Valorisation de l'activité des traitements sur la BD (1) 1. Transformation de sous-schémas conceptuels (SSC) en sous-schémas logiques (SSL) Sous-Schéma Conceptuel (SSC) 0,n 1,1 1,n 0,n 0,n 1,1 passer composer qté_commandée DEPOT N°dépot COMMANDE date_commande CLIENT N°client nom_client ARTICLE N°article libellé_article N°commande concerner adresse_client adresse_dépot Sous-Schéma Logique (SSL) associé qté_commandée DEPOT N°dépot COMMANDE CLIENT N°client nom_client ARTICLE N°article libellé_article N°commande COMPOSER N°commande N°article N°client adresse_client adresse_dépot N°dépot date_commande

Post on 09-May-2018

217 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Optimisation des BD Relationnelles Bernard ESPINASSE 1

    Optimisation et performance dans les bases de donnes relationnelles

    Bernard ESPINASSE

    Professeur Aix-Marseille Universit (AMU) Ecole Polytechnique Universitaire de Marseille

    Mars 2013

    1. Evaluation de l'activit sur la base de donnes

    2. Optimisation physique

    3. Optimiseurs de requtes

    4. Optimisation logique : dnormalisation

    Optimisation des BD Relationnelles Bernard ESPINASSE 2

    Plan 1. Evaluation de l'activit sur la base de donnes 2. Optimisation physique

    Performance et structures de donnes : choix d'une organisation/mthode d'accs Compression des donnes Index secondaires Partitionnement, clustrisation

    3. Optimiseurs de requtes Optimiseurs de requtes Statistiques sur l'tat des tables

    4. Optimisation logique : dnormalisation Problmatique de la dnormalisation Regroupement de tables, Cration de redondances d'attribut non cl, Ajout de cl

    trangre redondante, Cration de transitivit, Cration de tables de jointure

    Optimisation des BD Relationnelles Bernard ESPINASSE 3

    1. Valorisation de l'activit des traitements sur la BD Transformation de sous-schmas conceptuels (SSC) en sous-schmas

    logiques (SSL) Valorisation des primitives logiques

    Optimisation des BD Relationnelles Bernard ESPINASSE 4

    Valorisation de l'activit des traitements sur la BD (1) 1. Transformation de sous-schmas conceptuels (SSC) en sous-schmas

    logiques (SSL) Sous-Schma

    Conceptuel (SSC) 0,n 1,11,n

    0,n0,n

    1,1

    passer

    composerqt_commande

    DEPOTNdpot

    COMMANDE

    date_commande

    CLIENTNclientnom_client

    ARTICLENarticlelibell_article

    Ncommande

    concerner

    adresse_client

    adresse_dpot

    Sous-Schma Logique

    (SSL) associ

    qt_commandeDEPOTNdpot

    COMMANDE

    CLIENTNclientnom_client

    ARTICLENarticlelibell_article

    Ncommande

    COMPOSERNcommandeNarticle

    Nclient

    adresse_client

    adresse_dpot

    Ndpotdate_commande

  • Optimisation des BD Relationnelles Bernard ESPINASSE 5

    Valorisation de l'activit des traitements sur la BD (2) 2. Frquence d'une tche associe un modle externe frquence du message associ au modle externe exprime par rapport la priode de

    rfrence (gnralement le mois moyen) base sur la frquence de survenance des vnements initiateurs des procdures o figure

    cette tche 3. Transformation des actions en primitives - #T : Accs un tuple d'une table relationnelle par accs sur cl primaire, connaissant une

    valeur de cette cl - ?T : Accs un tuple d'une table relationnelle par accs sur un autre attribut que la cl

    primaire, ou slection/restriction de tuples d'une table selon une qualification - T+ : Ajout d'un tuple une table relationnelle - T- : Suppression d'un tuple une table relationnelle. Cette primitive est note T- nom de la

    table. - Tm : Modification d'un tuple d'une table relationnelle, par la modification de valeurs d'un ou

    plusieurs attributs de ce tuple - TXT': Jointure entre deux tables relationnelles T et T', par la modification de valeurs d'un ou

    plusieurs attributs de ce tuple. Cette primitive est note TXT' noms des tables concernes .

    Optimisation des BD Relationnelles Bernard ESPINASSE 6

    Valorisation de l'activit des traitements sur la BD (3) Illustration des primitives relationnelles :

    COMMANDE

    date

    CLIENTnclientnom client

    ncommandenclient

    CLIENT COMMANDE

    nclient nom client ncommande nclient date

    0001!!!!!!!!DUPONT

    0002 MARTIN

    0003!!!! DURAND...

    100 0001 12-02101 0001 19-03102 0001 22-04

    103 0002 12-02104 0002 20-04

    105 0003 12-02....

    #CLIENT (N0003)

    CLIENT X COMMANDE

    ?COMMANDE (date=12-02)

    Optimisation des BD Relationnelles Bernard ESPINASSE 7

    Valorisation de l'activit des traitements sur la BD (4) actions associes la prise en compte d'une nouvelle occurrence de COMMANDE :

    Sous-Schma Conceptuel (SSC) 0,n 1,1

    1,n

    0,n0,n

    1,1

    passer

    composerqt_commande

    DEPOTNdpot

    COMMANDE

    date_commande

    CLIENTNclientnom_client

    ARTICLENarticlelibell_article

    Ncommande

    concerner

    adresse_client

    adresse_dpot

    LEC

    LEC

    CRE

    LEC

    CRE

    CRE

    CRE

    m = 4,2

    m = cardinalit moyenne = 4,2(en moyenne, une commande porte sur de 4,2 articles)

    Sous-Schma Logique (SSL) associ

    qt_commandeDEPOTNdpot

    COMMANDE

    CLIENTNclientnom_client

    ARTICLENarticlelibell_article

    Ncommande

    COMPOSERNcommandeNarticle

    Nclient

    adresse_client

    adresse_dpot

    Ndpotdate_commande

    4,2

    #T

    #T

    #T

    T+

    T+

    Optimisation des BD Relationnelles Bernard ESPINASSE 8

    Valorisation de l'activit des traitements sur la BD (4) 4. Rcapitulatif de l'activit valorise par primitive pour chaque modle externe : traduction des actions, en primitives effectuer ce calcul d'abord pour l'activit unitaire de la tche, puis de la multiplier par la

    frquence de la tche sur la priode de rfrence. cumul par primitive de l'activit supporte par le modle (total par ligne). Du fait de

    l'htrognit des primitives en termes d'quivalent-accs, seul le cumul par primitive a une signification :.

    primitives activit unitaire activit mensuelle #T CLIENT 1 10 000 #T DEPOT 1 10 000

    T+ COMMANDE 1 10 000 T# ARTICLE 1x4,2 42 000

    T+ COMPOSER 1x4,2 42 000

    reprer les primitives forte activit, et retrouver les modles externes responsables en pratique: en l'absence d'outil logiciel prenant en charge cette valorisation fortement algorithmique,

    pratiquer ces calculs que sur un chantillon d'une vingtaine de modles externes remarquables par leur frquence, d'aspect critique (comme dans d'autres domaines la loi des 80-20 se constate galement ici).

  • Optimisation des BD Relationnelles Bernard ESPINASSE 9

    Valorisation de l'activit des traitements sur la BD (5) 5. Poids relatif des primitives en accs logiques Dfinir des quivalents-accs-logiques = poids relatifs entre les diffrentes primitives. Conventions pour la valorisation des primitives logiques

    1- unit d'accs logique = #T, toutes les autres seront exprimes en fonction de #T. 2- le nombre de tuples occupes par une table T sera not NbT(T) 3- le nombre de pages occupes par une table T sera not NbP(T)

    avec : NbP(T) = NbT(T)/nombre moyen de tuples dans la page le nombre moyen de tuples dans la page dpendra :

    - de la taille de la page, not P - de la taille du tuple, not T - du taux de remplissage de la page

    ces valeurs seront lies au SGBD et l'organisation de la table adopts. on pourra faire des calculs en premire approximation avec un taux de

    remplissage de 80% et des pages de 4K. Exemple :

    NbT(T) = 10000; P = 4Koctets; taux de remplissage de 80%; T = 200 octets; Nombre moyen de tuples par page = 4000x0,8/200 = 16 NbP(T) = 10000/16 = 625 pages.

    Optimisation des BD Relationnelles Bernard ESPINASSE 10

    Valorisation des primitives logiques (1) valeurs moyennes pour SGBDR actuellement commercialiss, une rflexion ncssaire sur

    la pertinence de ces valeurs dans le contexte de la BD #T =1 : slection selon cl primaire = unit d'accs logique ?T= NbP(T) : slection selon un attribut non cl primaire sans index secondaire :

    balayage squentiel ?T= Sx(NbP(T)+NP(I)): si le critre de slection comprend plusieurs termes dont un

    faisant intervenir un index secondaire I (avec S = facteur de slectivit du critre, cad la probabilit qu'un tuple satisfasse le critre; NbP(T) = nb pages de la table T; NbP(I) = nb pages de l'index I)

    T+ = T- = 4: le tuple est atteint par 1 accs l'index + 1 accs la page contenant le tuple cherch + 1 mise jour d'une page + 1 mise jour de l'index.

    Tm = 3: le tuple est atteint par 1 accs l'index + 1 accs la page contenant le tuple cherch + 1 criture sur page.

    TXT' = S(NbP(T) + (N(T)xNbP(T'))) : jointure, avec NbP(T) = nombre page de la table T, S = facteur de slectivit du critre sur T, N(T) = nombre de tuples de T satisfaisant le critre, NbAP(T') = nombre page de la table T'

    Optimisation des BD Relationnelles Bernard ESPINASSE 11

    Valorisation des primitives logiques (2) Globalement on pourrait retenir :

    primitive quivalent accs #T 1

    Tm 3

    T+=T- 4

    ?T NbP(T)

    ?T si critre/index Sx(NbP(T)+NP(I))

    TXT' S(NbP(T) + (N(T)xNbP(T'))

    Optimisation des BD Relationnelles Bernard ESPINASSE 12

    2. Optimisation physique dune BD relationnelle Performance et structures de stockage des donnes Conseils pour le choix dorganisation de stockage Compression Cl primaire et cl plaantes Index secondaires Partition de tables (vertical et horizontal) Clustrisation de tables

  • Optimisation des BD Relationnelles Bernard ESPINASSE 13

    Performance e t structures de stockage des donnes

    Problme : le SGBD permet toujours de trouver une donne mais un choix judicieux

    de structure de stockage (organisation des tables) permettra de rduire ce temps de recherche.

    pour certaines requtes : certaines organisations seront plus performantes

    mais :

    ces organisations affecteront : l'espace disque la concurrence (encore plus dlicate grer).

    Optimisation des BD Relationnelles Bernard ESPINASSE 14

    Certains SGBD proposent plusieurs organisations dans INGRES, une table peut tre organise en : fichier squentiel (heap)

    organisation par dfaut : INDEX PRINCIPAL (cl primaire de placement)

    hash (cl calcule) accs sur une valeur exacte de la cl la fonction de randonisation ne peut tre modifie.

    ISAM les donnes sont tries selon une cl permet un accs rapide sur valeur exacte ou partie de cl index statique: ncessite rorganisation qd table augmente

    BTREE donnes tries selon une cl accs rapide sur valeur exacte ou partie de cl index dynamique

    On peut changer l'organisation d'une table tout moment : Modify emp To heap Modify emp To hash On name Modify emp To btree On name, age

    Optimisation des BD Relationnelles Bernard ESPINASSE 15

    Structures de stockage : comparat i f produits produit chemin d'accs mthode d'accs

    DB2 SQL/DS

    index VSAM,

    INGRES

    index hash, ISAM, cheap, Btree,...

    ORACLE

    index+proximit VSAM sous OS IBM Sinon

    hash, ISAM, cheap, Btree,...

    UNIFY

    index +

    liens explicites

    hash, ISAM, Btree, ...

    DATACOM-DB

    index hash, Btree,

    Optimisation des BD Relationnelles Bernard ESPINASSE 16

    Heap : prsentat ion simpli f ie

  • Optimisation des BD Relationnelles Bernard ESPINASSE 17

    Hash : prsentat ion simpli f ie

    algorithme de hachage : page = age mod 10 (les algo. rels sont bien plus complexes)

    remarque : ici la page 1 na pas denregistrement ; la page 3 est pleine et a une page de dbordement

    Exemple : select * from emp where emp.age = 43 : INGRES doit chercher dans la page 3 et sa

    page de dbordement.

    Optimisation des BD Relationnelles Bernard ESPINASSE 18

    ISAM : prsentat ion simpli f ie

    Optimisation des BD Relationnelles Bernard ESPINASSE 19

    Btree : prsentat ion simpli f ie

    Optimisation des BD Relationnelles Bernard ESPINASSE 20

    Conse i ls pour le choix dorganisat ion de stockage

    squentiel (HEAP) pour : le chargement de donnes dans la base petite table (occupation de peu de pages) requtes manipulant des tables entires pour recuprer de l'espace d des DELETE Modify emp To heap contre accs 1 ou plusieurs tuples grosses tables

    HASH pour : recherche sur valeur exacte de cl (le plus rapide) contre : recherche sur pattern matching (partie de cl) traitement de table entire joints naturels (systmatique sans restriction) dbordements ds le dpart (on ne peut ajuster la fonction de randomisation)

  • Optimisation des BD Relationnelles Bernard ESPINASSE 21

    Conse i ls pour le choix d 'organisat ion ISAM:

    pour requtes ncessitant pattern matching ++ la table grossit lentement (peu de rorg.) cl large contre si recherche sur cl complte (->HASH) grosse table croissance rapide

    BTREE: pour besoin de pattern matching + la table grossit vite table trop grosse pour tre souvent rorganise (Modify) joints de tables entires contre table statique ou croissance faible large cl

    si ajout de nouveaux tuples seulement en fin de table (plus grand risque de DEAD LOCK par utilisateurs)

    Optimisation des BD Relationnelles Bernard ESPINASSE 22

    Conse i ls pour le choix d 'organisat ion heap hash ISAM Btree meilleur pour

    1 - - 2 chargement de table - 1 1 1 effacer tuples doubles - 1 2 2 recherche sur cl complte - - 1 1 intervalles/pattern

    matching 1 3 2 2 recherches squentielles - - 1 1 recherche sur cl partielle - - - 1 accs donnes tries - - 1 1 joints sur larges tables - - - 1 index crot comme table 1 - - - trs petite table - - - 1 trs grande table

    (1): prfr;

    (2): acceptable; (3): mdiocre;

    (-): dconseill ou impossible

    Optimisation des BD Relationnelles Bernard ESPINASSE 23

    Compression supprime les blancs

    pour gain en espace disque peut s'appliquer sur les structures seq, hash, isam, btree

    contre

    la dcompression est fate chaque accs => mise jour plus coteuse si donnes peu comprssible ( pour adresse) si nombreux index secondaires

    DUVAL 3 rue du pont1245 ......

    DUVAL 3 rue du pont ......1245

    Optimisation des BD Relationnelles Bernard ESPINASSE 24

    Cls pr imaires e t c ls plaantes (1)

    Cl primaire :

    le critre de recherche le plus frquemment utilis sur une table relationnelle concerne le plus souvent la cl primaire.

    la cl primaire peut tre porter sur un attribut (cl primaire simple) ou plusieurs attributs (cl primaire compose)

    Cl plaante :

    elle place les tuples dune table sur disque selon la valeur de cette cl primaire facilitera grandement l'accs la table selon ce critre

    adopter pour la table une organisation indexe, dans laquelle la cl primaire de la table sera aussi cl plaante et cl d'index primaire

    Le choix judicieux pour chaque table d'une d'organisation parmi les organisations proposes par le SGBD adopt (principalement indexes), est un choix

    d'optimisation important.

  • Optimisation des BD Relationnelles Bernard ESPINASSE 25

    Index secondaires (1) ! les applications sur la base de donnes effectuent aussi des accs aux donnes

    selon de multiples critres de recherche :

    -> l'installation d'index secondaires permet d'viter un coteux balayage squentiel de la table

    ! index secondaire = un r-ordonnancement logique des tuples de la table en fonction d'une cl d'accs ou cl secondaire, pouvant tre discriminante ou non, simple ou compose, diffrent de la cl plaante

    smantique

    accs et organisation

    cl primairecl externe simple ou compose

    cl plaantecl secondaire

    LOGIQUE

    PHYSIQUE simple ou compose

    Optimisation des BD Relationnelles Bernard ESPINASSE 26

    Index secondaires (2) lors d'une recherche sur index secondaire, le balayage de l'index secondaire

    donne les identifiants de tous les tuples, appel aussi "tuple identifiant", satisfaisant le critre de recherche

    les tuples sont ensuite accds directement ( raison d'une entre/sortie par page) par via l'identifiant et selon l'organisation de la table

    Exemple : dans INGRES :

    salaire TIDP8000100001200020000...

    2031...

    index_salaire

    salaire1000020000800012000...

    emp

    ....nomjeanpaulreneannie...

    TIDP = pointeur sur le tuple (adresse de page et offset sur la page) de la table emp

    Optimisation des BD Relationnelles Bernard ESPINASSE 27

    Index secondaires (3) Suite exemple :

    index_salaire: est une table de la BdD a autant de tuples que emp est organis par dfaut en ISAM (Ingres)

    Avantages : permet de spcifier des cls secondaires utilis par l'optimiseur de requtes

    Inconvnients : gourmand en place disque mise jour couteuse de la table emp dtruit quand la table emp est rorganis (Modify)

    Optimisation des BD Relationnelles Bernard ESPINASSE 28

    Partition de tables relationnelles (segmentation) Objet : rduire les cots d'accs aux donnes en liminant des

    informations inutilement transfres de la mmoire secondaire la mmoire centrale (entres/sorties)

    ! les attributs et tuples des tables d'une BdDR rarement tous utiliss

    dans les requtes : seulement 20 % des donnes effectivement stockes sont concernes par 80% des requtes lances sur la base (rgle des 80/20 de Knuth).

    ! Do lide dclater certaines tables de la BdDR afin de rduire le flux des informations en entre/sortie :

    ! soit verticalement en paquets d'attributs : partitionnement vertical

    ! soit horizontalement en paquets de tuples : partitionnement horizontal

  • Optimisation des BD Relationnelles Bernard ESPINASSE 29

    Partition de tables relationnelles (segmentation) ! le paquet identifi comme le plus sollicit pourra par exemple tre stock sur

    le support mmoire secondaire le plus performant : partitionnement vertical

    partitionnement horizontalTABLE

    ! tout se passe comme si une table du MLD tait dcoupe en projections ou

    restrictions arbitraires (non soumises aux rgles de la normalisation) et stocke dans des sous-tables implantes physiquement dans des zones mmoires diffrentes.

    Optimisation des BD Relationnelles Bernard ESPINASSE 30

    Part i t ionnement vert ical ! Consiste clater une table en sous tables regroupant les attributs les plus

    souvent invoqus ensembles ! Le partitionnement doit tre totalement transparent aux utilisateurs qui ne

    connaissent que les schmas logiques des tables

    ncessite un prtraitement de leurs requtes

    ! Problmes rencontrs lors de ce partitionnement sont [Richard 89] :

    ! choix d'une bonne partition (table n attributs : n n/2 partition possibles)

    ! les cots de certaines transactions utilisant des attributs rpartis dans des paquets diffrents peuvent se rvler suprieurs ce qu'ils seraient si les attributs n'taient pas rpartis.

    Optimisation des BD Relationnelles Bernard ESPINASSE 31

    Part i t ionnement horizontal Consiste subdiviser les tuples d'une table en sous tables de mme

    schma ! on retrouve la table initiale par simple union algbrique des

    sous-tables ! on regroupe ensemble les tuples avec forte probabilit d'tre

    accds ensemble ! chaque sous-relation peut avoir sa propre organisation,

    optimisant l'accs partitionnement vertical

    partitionnement horizontalTABLE

    Optimisation des BD Relationnelles Bernard ESPINASSE 32

    Part i t ionnement horizontal Intrts du partitionnement horizontal [Richard 89] : ! apporte des solutions au problme de protection de donnes sensibles ! efficace pour limiter dsorganisation des tables avec sous-ensemble de

    tuples : - soit de longueurs variables - soit ayant une valeur nulle soit dont la valeur est plus souvent

    modifie ! la sous-table contenant ces tuples sera alors rorganise aussi souvent

    que ncessaire, sans que les autres sous-tables le soit.

    Doit tre adopt avec prudence : ! s'il favorise les requtes les plus frquentes ou celles mettant en jeu les

    plus gros volumes d'information, il peut au contraire pnaliser fortement d'autres requtes.

  • Optimisation des BD Relationnelles Bernard ESPINASSE 33

    Clust r isat ion (cluste r) Objet : regrouper physiquement, sur une mme page (une entre/sortie),

    des donnes provenant d'une ou plusieurs tables et vrifiant des prdicats de slection prciss

    ! l'utilisation des clusters est totalement transparente l'utilisateur ! en gnral le regroupement concerne 2 tables, afin d'optimiser les jointures

    sur ces tables, c'est le principal intrt de la clustrisation ! il est aussi possible de dfinir des clusters sur une seule table, ce qui permet

    d'implanter les deux variantes de partitionnement prcdemment voques [Richard 89].

    ! peut tre compare des optimisation plus structurelles dnormalisantes, mais elle prsente le grand avantage de ne pas modifier la structure logique en se plaant uniquement au niveau de l'implantation physique des donnes.

    Optimisation des BD Relationnelles Bernard ESPINASSE 34

    Clust r isat ion (cluste r) Exemple avec le SGBDR ORACLE : il faut crer tout d'abord les clusters, puis y placer une

    ou plusieurs tables (si plusieurs tables sont regroupes dans un cluster, elles doivent avoir au moins un attribut en commun)

    le regroupement des tables dans un cluster a pour consquences que : - chaque valeur de cet attribut commun est stocke une fois dans la base - les tuples d'une table ayant la mme valeur pour cet attribut sont stockes dans

    une mme zone du disque (page) - SQL*plus cre un index, appel cluster index, sur les attributs regroups

    il est possible : soit de crer une table et placer sa dfinition dans un cluster (cration d'une

    table pour la premire fois) soit crer la table et la placer dans un cluster existant (pour ajouter une table

    existante dans le cluster) Syntaxe de la cration du cluster sous Oracle :

    CREATE CLUSTER nom_cluster (attribut_cluster1 type_donnes, attribut_cluster2 type_donnes...) [SIZE taille_logique] [SPACE nom_zone] [COMPRESS \ NOCOMPRESS];

    il est possible de supprimer des clusters, il faut alors d'abord en extraire les tables.

    Optimisation des BD Relationnelles Bernard ESPINASSE 35

    3. Optimisation des requtes Problmatique de loptimisation des requtes Optimiseurs de requtes Statistiques sur l'tat des tables

    Optimisation des BD Relationnelles Bernard ESPINASSE 36

    Problmatique de l opt imisat ion des requtes Pourquoi ? logique/physique

    l'utilisateur voit et manipule des tuples et des relations (description logique des infos.) sans savoir comment se fait le stockage sur mmoire secondaire (physique)

    dissociation logique/physique -> indpendance programme/donnes LMD assertionnels

    langages de manipulation de donnes prdicatifs assertionnels: dfinir le "quoi" pas le "comment" ordre des spcifications indiffrent nombreuses formulation possible pour une mme requte

    => le SGBD relationnel doit: assurer le passage : reprsentation relationnelle -> structure de

    stockage transformer : requte assertionnelle -> squence d'opration/donnes choisir la squence optimale

    => Optimisation des requtes

  • Optimisation des BD Relationnelles Bernard ESPINASSE 37

    Optimiseurs de requ tes La plupart des SGBD relationnels possdent des optimiseurs de requtes

    Les optimiseurs de requtes ont pour rle de :

    minimiser les I/O disques

    minimiser le temps CPU

    exploiter au maximum les index secondaires (requtes mono-table)

    tablir une stratgie lors de requtes multi-tables :

    choix d'un ordre des jointures

    comment faire des jointures

    utiliser les index secondaires

    Pour cela les optimiseurs de requtes utilisent des statistiques sur l'tat des tables

    Optimisation des BD Relationnelles Bernard ESPINASSE 38

    Stat ist iques sur l ' tat des tables Dans INGRES commande OPTIMIZEDB :

    pour chaque table R: NCARD(R): nb tuples de R (cardinalit de R) TCARD(R): nb de pages occupes par R pour chaque attribut A de la table R: MIN(A): valeur minimale de A prsente dans R MAX(A): valeur maximale de A prsente dans R pour un index I de la table R: ICARD(I): nb de cls distinctes dans I NINDX(I): nb de pages occupes par I CLUSTER(I): index plaant ou non

    Ces informations sont ranges dans une "mta-base"

    Informations mises jour priodiquement par la commande UPDATE_STATISTICS

    Optimisation des BD Relationnelles Bernard ESPINASSE 39

    Usage de Optimizedb ( Ingres) Soit la restriction sur la table emp :

    emp.age > 100 il y a de forte chance qu'aucun tuple de la table soit retourn le systme considre cependant age comme un entier compris entre +/- 32767 -> l'optimiseur de requte peut adopter de meilleurs plans s'il sait quoi ressemblent

    les donnes

    Valeurs mini et maxi si tous les employs ont moins de 66 ans (valeur maxi = 66), l'optimiseur en dduit

    instantanment qu'aucun tuple ne repond la requte sans autre information, l'optimiseur suppose alors une distribution uniforme entre

    valeur mini et valeur maxi Commande:

    Optimizedb -zx -remp -aage gnre les valeurs min et max pour l'attribut age de la table emp.

    Optimisation des BD Relationnelles Bernard ESPINASSE 40

    Usage de Optimizedb ( Ingres) (ingres)

    Histogrammes sans histogrammes, l'optimiseur de requtes suppose une distribution uniforme entre les

    valeurs mini et maxi Commande:

    Optimizedb -zh -remp -aage gnre un histogramme de la distribution de l'ge de la table emp:

    40

    20

    10

    5

    0 10 20 30 40 50 60 70

    5 5

    40 40

    5 5

  • Optimisation des BD Relationnelles Bernard ESPINASSE 41

    Usage de Optimizedb ( Ingres) Nombre de valeurs uniques

    utile pour anticiper le nombre de tuples rpondant une restriction ou une jointure tant donn la restriction emp.dept = "commercial", l'optimiseur suppose qu'un tuple sera

    retourn sans autre information san information sur les duplications, l'optimiseur suppose une jointure 1-1

    Exemple Base: personnel et Tables: emp (employs), dept (dpartements) Attributs de emp: dept, div et attributs de dept: dnom, div, etage avant de lancer cette requte:

    Select e.name, d.etage From emp e, dept d Where e.dept=d.dnom And e.div=d.div And d.etage >1

    lancer la commande suivante: Optimisedb personnel -remp -adept adiv -rdept -adnom -adiv -afloor

    Optimisation des BD Relationnelles Bernard ESPINASSE 42

    4. Optimisation logique dune BD relationnelle : dnormalisation Problmatique de la dnormalisation Regroupement de tables Cration de redondances d'attribut non cl Ajout de cl trangre redondante Cration de transitivit Cration de tables de jointure

    Optimisation des BD Relationnelles Bernard ESPINASSE 43

    Problmatique de la dnormal isat ion (1)

    La dnormalisation :

    ensemble de rgles d'optimisation structurelles du modle logique relationnel

    ces rgles garantissent le respect des spcifications initiales :

    tout autre type de modification, sous couvert d'optimisation, peut entraner une altration de la smantique du modle conceptuel de donnes

    pour chacune de ces rgles il faut estimer les gains esprs et les pertes gnres, ainsi que les consquences secondaires

    Optimisation des BD Relationnelles Bernard ESPINASSE 44

    Problmatique de la dnormalisat ion (2)

    Les optimisations structurelles obtenues par dnormalisation :

    devront tre conduites avec prudence, car elles ont des consquences qui doivent tre estimes

    l'efficacit de ces diffrentes optimisations dpend du SGBD utilis : certaines mme ne seront pas toujours possibles sur tel ou tel systme.

    le concepteur optimise son modle par modifications successives de la structure, en valuant le bien fond de son choix en estimant le "gain" total par rapport aux critres conomiques dfinis.

  • Optimisation des BD Relationnelles Bernard ESPINASSE 45

    Regroupement de tables 2 tables relies par un lien un vers un, peuvent tre regroupe en une mme table, afin de

    rduire des activits en #T, ?T voir T+, T-, Tm et TXT' sur ces 2 tables :

    COMMANDEncommande

    FACTURE

    ncommandeNfacture

    0,1

    0,1 ou 1,1

    COMMANDE

    date_commandencommande

    composer

    FACTURENfacturedate facturation date_facturation

    date_commande COMMANDEncommande

    Nfacturedate_facturation

    date_commande

    MCD/MOD MLD brut MLD optimis

    Diagnostic : une forte activit en #T ou ?T sur des tables relies par des liens un vers un. Gain : suppression de la table B et donc de toutes les primitives associes. Perte : augmentation du volume mmoriser pour la table A = taille des attributs migrs de la table B x nombre de

    tuples de la table A accueillant la migration. Consquences induites :

    - si la taille des attributs de B migrant dans A est importante, il peut y avoir augmentation du cot de certaines primitives sur A.

    - selon les cas, il faudra prvoir la gestion des valeurs nulles sur les attributs migrants.

    Optimisation des BD Relationnelles Bernard ESPINASSE 46

    Regroupement de tables Exemples :

    0,n

    0,1

    PERSONNE

    prnomNom

    POSSEDER

    MAISONCoordonnesdate_constructionsurface

    MCD/MOD MLD brut MLD optimis

    date_acquisition

    PERSONNE

    prnomNom

    MAISONCoordonnesdate_constructionsurface

    POSSEDERNomCoordonnesdate_acquisition

    PERSONNE

    prnomNom

    MAISONCoordonnesdate_constructionsurface

    Nomdate_acquisition

    MCD/MOD MLD brut MLD optimis

    PRECEDER

    *,n 1,1TACHE

    dure..

    Ntche

    prcede suit

    TACHENtchedure..

    TACHE

    Ntche_prcdenteNtche

    dure..PRECEDER

    NtcheNtache_prcedente

    Optimisation des BD Relationnelles Bernard ESPINASSE 47

    Cration de redondances d'attribut non cl Lorsque la consultation d'un ou plusieurs attributs d'une table A partir d'une autre table B

    est importante et gnre de nombreux #T, ?T voir TXT', il peut tre intressant de dupliquer, sous certaines conditions, ces attributs sollicits dans B:

    Optimisation justifie pour une

    consultation importante de

    "adresse" partir de la table MAISON.

    Diagnostic : une forte activit en #T ou ?T voire TXT' sur des tables relies par des liens un vers un ou un vers plusieurs. Gain : rduction de #T ou ?T voire TXT'. Perte : augmentation du volume mmoriser pour la table accueillant la redondance d'attributs = S taille des attributs

    migrs x nombre de tuples de la table accueillant la duplication. Consquences induites : - si la taille des attributs dupliqus est importante, il peut y avoir augmentation du cot de certaines primitives sur la table

    accueillant la redondance. selon les cas, il faudra prvoir la gestion des valeurs nulles sur les attributs dupliqus et d'une faon gnrale les consquences de cette dnormalisation.

    MLD brut MLD optimis

    PERSONNE

    prnomgeadresse

    Nom

    MAISONCoordonnesdate_constructionsurfaceNom

    PERSONNE

    prnomgeadresse

    Nom

    MAISONCoordonnesdate_constructionsurfaceNomadresse

    Optimisation des BD Relationnelles Bernard ESPINASSE 48

    Ajout de cl trangre redondante

    MCD/MOD

    0,N 1,1

    CLIENT

    nom_clientNclient porter

    FACTURENfacturedate_facturemontant_facture

    concerne

    REGLEMENTNrglementdate_rglementmontant_rglement

    0,1

    1,1

    CLIENT

    nom_clientNclient

    FACTURENfacture

    REGLEMENTNrglement

    montant_rglementdate_rglementdate_facture

    montant_factureNclient Nfacture1

    1

    MLD Relationnel optimis:

    CLIENT

    nom_clientNclient

    FACTURENfacture

    REGLEMENTNrglement

    montant_rglementdate_rglementdate_facture

    montant_factureNclient NfactureNrglement

    1

    1

    1 Schmas relationnels : CLIENT(Nclient, nom_client) FACTURE(Nfacture, Nrglement, date_facture, montant_facture, Nclient) REGLEMENT(Nrglement, date_rglement, montant_rglement, Nfacture)

    Diagnostic : une forte activit en #T ou ?T sur des tables relies par des liens un vers un. Gain : rduction de #T ou ?T. Perte : augmentation du volume mmoriser pour la table accueillant la nouvelle cl trangre = S taille des attributs de

    cette cl x nombre de tuples de la table accueillant la migration. Consquences induites : - si la taille de la nouvelle cl externe est importante, il peut y avoir augmentation du cot de certaines primitives sur la

    table l'accueillant. - selon les cas, il faudra prvoir la gestion des valeurs nulles sur les attributs dupliqus et d'une faon gnrale les

    consquences de cette dnormalisation.

  • Optimisation des BD Relationnelles Bernard ESPINASSE 49

    Cration de transitivit Revient crer une nouvelle dpendance transitive :

    MCD/MOD

    0,N 1,1

    CLIENT

    nom_clientNclient porter

    FACTURENfacturedate_facturemontant_facture

    concerne

    REGLEMENTNrglementdate_rglementmontant_rglement

    0,N

    1,1

    CLIENT

    nom_clientNclient

    FACTURENfacture

    REGLEMENTNrglement

    montant_rglementdate_rglementdate_facture

    montant_factureNclient Nfacture

    MLD Relationnel optimis:

    CLIENT

    nom_clientNclient

    FACTURENfacture

    REGLEMENTNrglement

    montant_rglementdate_rglementdate_facture

    montant_factureNclient Nfacture

    Nclient CLIENT(Nclient, nom_client) FACTURE(Nfacture, date_facture, montant_facture, Nclient) REGLEMENT(Nrglement, Nclient, date_rglement, montant_rglement,

    Nfacture) Diagnostic : une forte activit en #B ou ?B et tables relationnelles A, B, C relies par des liens relationnels tels que

    prciss plus haut. Gain : rduction de #B ou ?B. Perte : augmentation du volume mmoriser pour la table C accueillant la nouvelle cl trangre = S taille des attributs

    de cette cl x nombre de tuples de C. Consquences induites : - si la taille de la nouvelle cl trangre est importante, il peut y avoir augmentation du cot de certaines primitives sur la

    table C. - selon les cas, il faudra prvoir dans C la gestion des valeurs nulles sur les attributs de la cl externe et d'une faon

    gnrale les consquences de cette dnormalisation.

    Optimisation des BD Relationnelles Bernard ESPINASSE 50

    Cration de tables de jointure (1) Il s'agit de rduire le temps d'excution de requtes en stockant physiquement les tables

    rsultantes des jointures les plus frquemment mise en oeuvre par ces requtes :

    A R*,n 1,1MCD/MOD MLD

    table rfrence

    table rfrante

    * = 0 ou 1

    AB B

    Cas cardinalit mini * = 1 (ou >1)

    - limination de la table rfrence A et de la table rfrenante B - cration de la table de jointure A X B - les contraintes rfrentielles entre A et B sont transformes en contraintes de

    dpendance fonctionnelles sur les attributs de la table de jointure A X B MCD/MOD

    A R B1,n 1,1

    MLD non optimis

    AXB

    MLD optimis

    table de jointuretable rfrence

    table rfrante

    A B

    Diagnostic : une forte activit en A X B sur des tables avec dpendances fonctionnelles. Gain : rduction du cot des jointures A X B. Perte : - augmentation du volume mmoriser pour la table A X B (plus de redondance) - table plus grosse, plus lourde exploiter. Consquences induites : - si taille des attributs dupliqus est importante, alors augmentation du cot de certaines primitives sur la table de jointure. - selon les cas, il faudra prvoir d'une faon gnrale les consquences de cette dnormalisation (MJ sur attributs de A).

    Optimisation des BD Relationnelles Bernard ESPINASSE 51

    Cration de tables de jointure (2) Cas cardinalit mini * = 0 :

    - la table rfrence A doit tre conserve - limination de la table rfrenante B - cration de la table de jointure A X B en liminant ventuellement les attributs non

    utiliss par les requtes utilisant cette jointure - transfrer les contraintes rfrentielles entre A et B dans la table de jointure A X B - introduire les contraintes sur les dpendances fonctionnelles

    A R0,n 1,1

    MCD/MOD

    B

    table de jointure

    MLD non optimis MLD optimis

    table rfrence

    A B

    table rfrence

    A AXB

    table rfrante

    Diagnostic : une forte activit en A X B sur des tables avec dpendances fonctionnelles. Gain : rduction du cot des jointures A X B. Perte : - augmentation du volume mmoriser pour la table A X B (plus de redondance) Consquences induites : - si la taille des attributs dupliqus est importante, il peut y avoir augmentation du cot de certaines primitives sur la table

    de jointure. - selon les cas, il faudra prvoir d'une faon gnrale les consquences de cette dnormalisation (mises jour sur les

    attributs de A qui se retrouvent dans A et A X B).