Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2010, 08h59   #1
Invité de passage
 
Jeanpierre hodin
Inscription : décembre 2010
Messages : 2
Détails du profil
Informations personnelles :
Nom : Jeanpierre hodin

Informations forums :
Inscription : décembre 2010
Messages : 2
Points : 0
Points : 0
Par défaut Rebuild après create unique index

Bonjour,

Je rencontre un problème de "performance" après construction d'un index.

Nous importons quotidiennement des tables de tarifs automobile via le script suivant :

Code :
1
2
3
4
5
6
7
8
9
10
DROP TABLE EUROTAX_ADDITION;
ALTER TABLE EUROTAX_ADDITION_TEMP RENAME TO EUROTAX_ADDITION;
CREATE INDEX EUROTAX_ADDITION_ADDVAL ON EUROTAX_ADDITION ("ADDVAL") ;
CREATE INDEX EUROTAX_ADDITION_ADDVALUNTIL ON EUROTAX_ADDITION ("ADDVALUNTIL") ;
CREATE INDEX EUROTAX_ADDITION_MARKET ON EUROTAX_ADDITION ("ADDMARKET");
CREATE INDEX EUROTAX_ADDITION_VEHTYPE ON EUROTAX_ADDITION ("ADDVEHTYPE") ;
CREATE INDEX EUROTAX_ADDITION_NATCODE ON EUROTAX_ADDITION ("ADDNATCODE") ;
CREATE INDEX EUROTAX_ADDITION_ADDFLAG ON EUROTAX_ADDITION ("ADDFLAG");
CREATE INDEX EUROTAX_ADDITION_ADDEQCODE ON EUROTAX_ADDITION ("ADDEQCODE");
CREATE UNIQUE INDEX EUROTAX_ADDITION_PK ON EUROTAX_ADDITION ("ADDMARKET", "ADDVEHTYPE", "ADDNATCODE", "ADDEQCODE", "ADDVAL") ;
Le problème se situe au niveau du dernier index créé :
INDEX EUROTAX_ADDITION_PK
Lorsque nous requetons sur la table via les clés indexées, le temps de réponse est de 10 secondes
Si dans le manager oracle, je fais un rebuild de cet index, le temps de réponse tombe à 2 secondes pour le même jeu de clés

Pourquoi suis-je obligé de faire un rebuild alors que l'index est recréé ?

Pour infos
(La table contient 7,5 Millions de lignes)
Le select count(*) prend 15 sec
Cela me parait également long

Cordialement
Jeanpierre080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 10h18   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Essayez plutôt de rafraîchir les statistiques :
Code :
1
2
3
4
5
6
7
DBMS_STATS.GATHER_TABLE_STATS
(
    OWNNAME          => 'votre_owner' ,
    TABNAME          => 'EUROTAX_ADDITION',
    ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE,
    CASCADE          => TRUE
);
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 10h22   #3
Invité de passage
 
Jeanpierre hodin
Inscription : décembre 2010
Messages : 2
Détails du profil
Informations personnelles :
Nom : Jeanpierre hodin

Informations forums :
Inscription : décembre 2010
Messages : 2
Points : 0
Points : 0
Merci de votre réponse Fabien,

Etant donné que le simple fait de lancer le rebuild de cet index via le manager divise le tps de réponse par 4 ou 5, dois je comprendre que la commande rebuild du manager execute également un recalcul des stats ?
Jeanpierre080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 10h34   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Il faut voir ce qui se passe dans la requête avant et après la reconstruction avec plan d'exécution et trace Oracle pour voir ce qui influe réellement sur les performances.

Sans ces outils, on ne peut qu'émettre des hypothèses.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 23h08   #5
Membre Expert
 
Avatar de pachot
 
Homme Franck Pachot
DBA Oracle
Inscription : novembre 2007
Messages : 703
Détails du profil
Informations personnelles :
Nom : Homme Franck Pachot
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : DBA Oracle
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 703
Points : 1 630
Points : 1 630
Bonjour,
CREATE INDEX calcule les stats depuis la 10g.
Mais ton résultat peut dépendre: de la version, du partitionnement de la table, des options ti gather_stats que tu lqnce pqr la suite.
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 ...
pachot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 13h33   #6
Membre confirmé
 
Avatar de Ahmed AANGOUR
 
Homme Ahmed AANGOUR
DBA Etudes Oracle
Inscription : janvier 2010
Messages : 123
Détails du profil
Informations personnelles :
Nom : Homme Ahmed AANGOUR
Âge : 33
Localisation : France

Informations professionnelles :
Activité : DBA Etudes Oracle

Informations forums :
Inscription : janvier 2010
Messages : 123
Points : 217
Points : 217
Bonjour,

Pouvez-vous effectuer le test suivant et nous renvoyer le résultat:

Sous SQLPLUS:
1) Recréer votre table et les index
2) Activer la collecte des stats d'execution avec la commande suivante:
Code :
1
2
 
ALTER session SET statistics_level=ALL;
3) Exécutez votre requête

4) Affichez le plan avec les stats d'exécution:
Code :
1
2
3
4
 
SET LINES 300
SET PAGES 500
SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL, 'allstats last'));
5) Rebuild de votre index

6) Exécutez votre requête

7) Affichez le plan avec les stats d'exécution:
Code :
1
2
3
4
 
SET LINES 300
SET PAGES 500
SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL, 'allstats last'));
A noter que pour pouvoir utiliser la fonction DISPLAY_CURSOR du package DBMS_XPLAN le USER que vous utilisez doit posséder les droits sur les vues suivantes: v$session, v$sql, v$sql_plan, and v$sql_plan_statistics_all
Le plus simple c'est de granter au user le privilege "SELECT ANY DICTIONARY"

cdmt,
Ahmed
__________________
Mon blog Oracle: http://ahmedaangour.blogspot.com/
Ahmed AANGOUR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 14h06   #7
Membre régulier
 
Christophe LE FLOCH
Inscription : août 2009
Messages : 105
Détails du profil
Informations personnelles :
Nom : Christophe LE FLOCH
Âge : 37

Informations forums :
Inscription : août 2009
Messages : 105
Points : 90
Points : 90
Une aute éventualité : lors de te seconde requête, tes blocs de données sont en cache. Te reqûete est beaucoup plus rapide mais cela n'a rien à voir avec le rebuild en lui-même.
mongolic est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h19.


 
 
 
 
Partenaires

Hébergement Web