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 :

Comment bien placer ses index


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 36
    Par défaut Comment bien placer ses index
    Bonjour à tous!

    Je vais essayer d’être clair dans mes explication mais c'est un peu confus dans ma tête...
    Je travaille sur une base un de données oracle 10g qui se dégrade énormément au niveau des performances (insert/update, requête, activation des clés...). Je pense que le problème vient des index.

    C'est une base de type 'BI'. J'ai une table de faits contenant environ 15 millions de lignes, et tout un ensemble de table de référence. Certaines tables de référence possèdent plusieurs milliers de ligne alors que d'autre n'en font à peine une dizaine.
    Il y a environ 40 dimensions.

    L'alimentation de la table de fait se fait à partir d'une table source. Lors de l'alimentation certaine dimension sont directement fournies. Aucune jointure n'est nécessaire. Pour d'autre, il faut faire une jointure avec la table de référence pour récupérer l'ID.

    Au niveau de la restitution, les utilisateurs créent eux même leur requête (avec Brio/HPS) à partir de libellé, donc à chaque fois une jointure est faite entre la table de fait et la table de dimension sur la PK de la dimension.

    Il y a un index Bitmat sur tous les champs de la table de fait pointant sur une dimension. C'était comme ca quand je suis arrivé et je pense que le soucis vient de là.

    Déjà est-ce que le problème vient réellement de là? Faut-il mettre un index sur chaque champs? (sachant qu'une jointure peut être fait sur tous les champs).

    Sinon comment bien choisir les champs où mettre les index?
    Faut-il privilégier les champs ayant beaucoup de valeurs différentes?
    Les champs où l'on fait des jointures lors de l'alimentation?

    Faut-il essayer de recréer les index régulièrement?

    Par avance merci pour vos conseils!!

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Si vous n'êtes pas allergique à l'anglais, dans la documentation Oracle tout le chapitre sur le datawarehouse est plutôt bien écrit.

    C'est assez long à lire, mais si vous êtes confronté à ces problématiques, ça vaut le coup.
    http://docs.oracle.com/cd/E11882_01/...e25554/toc.htm

  3. #3
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Un index bitmap sur chaque colonne de dimension est en soi une bonne modélisation pour un modèle en étoile.
    A condition que:
    - les restitutions vont chercher peu de lignes de la table de fait une fois que tous les prédicats sur les dimensions sont appliqués.
    - les chargements se font en bloc, et non pas avec des inserts lignes à lignes.

    L'idée, c'est que les prédicats sont appliqués sur les dimensions, les entrées des index bitmap sont combinées pour aller chercher les lignes intéressantes par leur rowid.

    Par contre, les index bitmap se dégradent très vite sur des insert/update/delete ligne à ligne. S'il y a beaucoup de ces manipulations à faire, alors on passe par une table de staging puis par un insert massif dans la table de fait.

    Cordialement,
    Franck.

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Citation Envoyé par khomar Voir le message
    Il y a un index Bitmat sur tous les champs de la table de fait pointant sur une dimension. C'était comme ca quand je suis arrivé et je pense que le soucis vient de là.
    En plus de lire le reste de la doc, commence peut être par Optimizing Star Queries pour essayer de répondre à tes questions concernant les index bitmap.

    Tu peux modifier le paramètre STAR_TRANSFORMATION_ENABLED au niveau de la session (via alter session).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 36
    Par défaut
    Merci pour ces réponses! Je vais aller lire la doc.

Discussions similaires

  1. Comment bien déboguer son code ?
    Par D[r]eadLock dans le forum Débuter
    Réponses: 47
    Dernier message: 02/04/2024, 16h06
  2. Comment bien gérer les index ?
    Par éric1 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/08/2009, 14h35
  3. Comment "bien" faire ses CSS
    Par sliderman dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 30/06/2008, 20h38
  4. comment bien faire organiser ses header
    Par DEVfan dans le forum C++
    Réponses: 43
    Dernier message: 29/04/2008, 11h58
  5. Comment bien créer ses applications Web?
    Par fflorever dans le forum SharePoint
    Réponses: 1
    Dernier message: 26/03/2008, 10h17

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