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 06/09/2007, 15h07   #1
Membre confirmé
 
Inscription : juillet 2005
Messages : 402
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 402
Points : 269
Points : 269
Par défaut [Oracle 9.2] Necessité/utilité du COMPUTE STATISTICS

Bonjour à tous.

Je fais actuellement des tests d'index sur une table (85 millions de lignes, 35 Go) afin d'optimiser les temps de traitement.

Je travaille sur un environnement de développement, importé depuis l'environnement de production. J'ai supprimé les index existants relatifs à cette table pour repartir de zéro.
J'ai créé 2 index, mais je suis déçu par les résultats obtenus et je suis parfois surpris par la manière dont l'optimiseur d'Oracle les utilise (ou ne les utilise pas, d'ailleurs).

Les statistiques de ces index n'ont jamais été calculées et je me demandais si cela pouvait avoir une incidence.
Il me semblait que ces statistiques étaient utiles pour orienter l'optimiseur entre les différents index, ou après modifications du contenu de la base. Or ce contenu ne change pas dans mon environnement de développement, et je n'ai actuellement sur ma table que 2 index, dont un est la clé primaire. J'en viens donc à me demander si je ne devrais pas lancer un COMPUTE STATISTICS sur mes index.

De plus, peut-on calculer ces stats sans "rebuilder" les index ?
marchand_de_sable est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2007, 15h35   #2
Membre éclairé
 
Avatar de Wurlitzer
 
Inscription : avril 2006
Messages : 465
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 465
Points : 368
Points : 368
Bien sur que les statistiques sont importantes sur les tables et les index. Si tu n'est pas en mode RULE c'est la dessus qu'Oracle se base pour calculer ses plans.

Le calcul des statistique n'a rien a voir avec le REBUILD. Quand tu fais un REBUILD il ne calcul pas les stats et pour calculer les stats tu n'as pas besoins de faire un REBUILD.

Compte tenu du gros volume de ta table tu peux limiter le temps de calculs des stats en utilisant un estimate à 30 % par exemple plutôt que de calculer sur toute la table/index.

Une dernière précision, si le contenu de la base change pas ou peu cela veut dire que tu n'auras pas besoins de recalculer les stats régulièrement mais il faut quand même les calculer une première fois
Wurlitzer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2007, 15h47   #3
Membre confirmé
 
Inscription : juillet 2005
Messages : 402
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 402
Points : 269
Points : 269
Citation:
Envoyé par Wurlitzer Voir le message
Bien sur que les statistiques sont importantes sur les tables et les index. Si tu n'est pas en mode RULE c'est la dessus qu'Oracle se base pour calculer ses plans.
Heu, on fait comment pour savoir si on est en RULE ou en CHOOSE ? Et c'est quoi la différence ?

Citation:
Envoyé par Wurlitzer Voir le message
Le calcul des statistique n'a rien a voir avec le REBUILD. Quand tu fais un REBUILD il ne calcul pas les stats et pour calculer les stats tu n'as pas besoins de faire un REBUILD.
La commande que j'ai trouvé en me renseignant était :
Code :
ALTER INDEX mon_idx REBUILD COMPUTE STATISTICS
Vu que j'avais pas le goût de lancer un REBUILD, j'ai tenté sans. J'ai eu droit à un Index modifié en 1µs, mais pas de stats visible dans OEM...
Du coup, que faut-il lancer comme commande ?

Citation:
Envoyé par Wurlitzer Voir le message
Compte tenu du gros volume de ta table tu peux limiter le temps de calculs des stats en utilisant un estimate à 30 % par exemple plutôt que de calculer sur toute la table/index.
J'ai vu ça dans OEM, je vais peut-être passer par là.

Citation:
Envoyé par Wurlitzer Voir le message
Une dernière précision, si le contenu de la base change pas ou peu cela veut dire que tu n'auras pas besoins de recalculer les stats régulièrement mais il faut quand même les calculer une première fois
OK. C'est ce que je commençais à me dire...

Merci pour les renseignements.
marchand_de_sable est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2007, 16h43   #4
Membre éclairé
 
Avatar de Wurlitzer
 
Inscription : avril 2006
Messages : 465
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 465
Points : 368
Points : 368
dans les paramètres oracle tu as OPTIMIZER_MODE qui te dis si tu es RULE ou CHOOSE.


RULE Utilise des règles fixe du genre un index c'est mieux que pas d'index

CHOOSE est sensé être plus intelligent et vérifier si l'index est vraiment mieux.

Pour calculer les stats vas voir du coté du package DBMS_STATS
Wurlitzer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2007, 16h53   #5
Membre confirmé
 
Inscription : juillet 2005
Messages : 402
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 402
Points : 269
Points : 269
Citation:
Envoyé par Wurlitzer
RULE Utilise des règles fixe du genre un index c'est mieux que pas d'index

CHOOSE est sensé être plus intelligent et vérifier si l'index est vraiment mieux.
OK. Merci.
Citation:
Envoyé par Wurlitzer
Pour calculer les stats vas voir du coté du package DBMS_STATS
Oui, c'est ce que j'ai fait. J'ai lancé l'analyse via OEM, et il m'a sorti ce package

Merci pour les infos.

A+
marchand_de_sable est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h43.


 
 
 
 
Partenaires

Hébergement Web