|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 32 ![]() |
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!! |
|
|
00
|
|
|
#2 |
![]() ![]() |
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
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#3 |
|
Membre Expert
![]() ![]() Franck PachotDBA Oracle Inscription : novembre 2007 Messages : 706 ![]() |
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.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
|
|
10
|
|
|
#4 | |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Citation:
Tu peux modifier le paramètre STAR_TRANSFORMATION_ENABLED au niveau de la session (via alter session). |
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 32 ![]() |
Merci pour ces réponses! Je vais aller lire la doc.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com