{Oracle} Performance consultation / insertion

Fermé
chenapan75 Messages postés 1 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 11 mars 2010 - 11 mars 2010 à 14:55
 fiu - 22 mars 2010 à 23:04
Bonjour,
Je développe actuellement un programme en Pro*C qui se connecte (entre autre) à un base Oracle.
J'utilise une table munie d'un index sur laquelle j'effectue dans un premier temps une consultation qui est tout de suite suivi d'une insertion.
Or, je sais que pour chaque insertion les index d'une table sont automatiquement mis à jour.
Je m'interroge donc sur l'efficacité d'utiliser un index ou non.
Ou il y a-t-il un moyen de forcer Oracle à ne pas faire sa mis a jour sur les index pour chaque insertion ?

Il faut savoir que j'ai des contrainte de performance très pointu et la moindre centième de seconde est importante. Et en moyenne, j'ai 200 requêtes de ce type à la minute.

Merci.
A voir également:

4 réponses

Salut,

évidemment que désactiver ton index puis le reconstruire va te coûter du temps :
1. l'index sert à accélérer les recherches => si tu le désactives tu te pénalises
2. l'index est automatiquement mis à jour à chaque modification => bien évidemment le moteur se contente normalement d'indexer seulement la nouvelle donnée. Si tu désactives ton index, insère une donnée et réactive l'index, le moteur ne saura pas combien de modifications ont été faites, donc toute la table sera ré-indexée...

donc, la résolution de ton problème passe par la lecture et l'assimilation du storage_clause évoqué plus haut et quelques chapitres sur le tuning dans oracle, et plus particulièrement la compilation (ou préparation) des instructions, idem pour les procédures et l'agencement des indexes

en dernier ressort, peut-être faudra-t-il passer par un autre sgbd si oracle est si peu performant...
1
Salut,

en fait, ta question est simple : Comment puis-je modeler le fonctionnement d'un index puisque son réglage par défaut n'est pas performant ?

je t'enjoins donc de jeter un œil sur la littérature adéquate : storage_clause qui, je l'espère, te comblera.
0
Bonjour,
Sauf erreur, je pense que tu peux désactiver l'index avant les insertion, et le reconstruire après, en faisant comme ça :

alter index TON_INDEX unusable;
...
TES INSERTIONS EN TABLE
....
alter index TON_INDEX rebuild;

Cordialement, M.
0
Bonjour,

Et merci de vos réponses.
J'avais effectivement vu que je pouvais désactiver l'index et le reconstruire après mais ceci ne dégrade pas non plus le temps ?
0