IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

optimisation de l'ordre de stockage de mes lignes


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 43
    Points
    43
    Par défaut optimisation de l'ordre de stockage de mes lignes
    Bonjour,
    le titre n'est pas très explicite mais je n'ai pas vraiment trouvé mieux.

    je m'occupe en partie d'un datawarehouse, je cherche donc a améliorer le temps de certains traitements. Je suis en oracle 9.2.0.6

    si l'on prend le cas suivants, cas pratiques dans la gestion de rendez-vous d'un hopital.

    j'ai une table avec les horaires par défaut de mes ressources, qui sont un médecin, une salle, ou un appareil. l'horaire est associé a un examen qui est associé de manière unique a un service. pour une même tranche horaire une ressource peut avoir plusieurs examens définis.
    En pratique je me retrouve souvent a aller chercher dans cette table pour un service, une ressource, pour une période sélectionnée.

    Je pensais donc qu'il serait intéressant d'arriver a organiser la table suvant cette vue pour que le sgbd puisse retrouver les infos dans un nombre restreint de page, plutot que de devoir pratiquement charger toutes les pages de la table même si elle est correctement indexée.

    y a t'il quelque chose qui m'assure que si je tronque ma table puis je réinsere dans l'ordre voulu, ce sera physiquement refleté au niveau stockage?

    ou bien y a t'il une technique particulière?

    merci pour votre aide

  2. #2
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Points : 171
    Points
    171
    Par défaut
    Bonjour,

    J'utiliserais plutot un partitionnement pour la période et des index pour les autre données. Dans le cas ou l'index ne posséde qu'un nombre limité de valeurs, par exemple pour service, préférer un index bitmap.

    Cdt

  3. #3
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Avant d'envisager une modification de l'organisation physique des données, il est souhaitable d'analyser les performances globales de l'instance avec un outil comme Statspack ou OEM et les performances individuelles des requêtes avec la trace SQL et TKPROF. Il se peut très bien que les problèmes de performances aient d'autres causes.

    Noter aussi que la partionnement est une option facturée séparément de la licence de la Enterprise Edition (même si cette option peut être installée sans vérification particulière).

  4. #4
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    Attention aux index Bitmap.

    Si il s'agit effectivement d'un datawarehouse pas de soucis.

    Mais si il s'agit d'un système de gestion des RDV dans un hôpital on est dans un système OLTP (Je dirais même très OLTP, car les temps de réponse sont primordiaux).

    Or les index bitmap ont la réputation d'être très efficace pour combiner des colonnes à faible cardinalité mais ils ont aussi la réputation d'être très mauvais en mise a jour.

    Sinon je suis (une fois de plus ) d'accord avec pifor. Il faut partir des problèmes remontés par les outils d'analyses pour trouver les solutions et non pas appliquer des solutions a priori pour voir si cela a un impact ou non.

    Une dernière chose, en dehors du partitionnement, la seule solution que tu as pour organiser des données dans une table c'est d'utiliser des IOT http://oracle.developpez.com/guide/a...age=Chap1#L1.4

  5. #5
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Points : 171
    Points
    171
    Par défaut
    si par exemple il n'y a que quelques services, un index bitmap conviendra parfaitement.

    Il faut les utiliser effectivement pour des données qui ne sont pas mises à jour souvent. Mais si un examen est affecté à un service, on changera peut-être l'heure, mais rarement le service, la restriction ne tient pas.

    Pour les IOT (tables organizées en index) elles ne sont intéressantes que si la table ne contient que la clé ou alors un nombre restreint de données en plus. L'accés est du même ordre que celui fournit par un index b-tree, l'accés aux data en moins.

Discussions similaires

  1. Création d'une collection d'objets avec un ordre de stockage particulier
    Par ahmadou_20 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 29/08/2014, 15h42
  2. Réponses: 0
    Dernier message: 17/03/2010, 14h33
  3. [MySQL] Changer l'ordre d'apparition de mes articles
    Par sandddy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 17/10/2007, 12h41
  4. <table> en <div> et mes lignes ?
    Par Sepiaan dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 28/11/2006, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo