-
Calcul des statistiques
Bonjour,
Je débute sur Oracle et j'aurai souhaité quelques informations complémentaires concernant le calcul des statistiques (avec dbms_stats et notamment la constante DBMS_STATS.AUTO_SAMPLE_SIZE pour estimate_percent). Alors voilà :
Lorsque je lance ce calcul des statistiques sur l'ensemble du schéma en laissant le soin à Oracle de déterminer la taille de l'échantillon, l'échantillon de calcul utilisé varie de 1%, 5%, 20 %, 33% ou bien 100%.
Comment l'échantillon de calcul est choisit ? Quels sont les paramétrages, les critères qui rentrent en ligne de compte dans le calcul des stats (je me doute qu'il y a les index, les contraintes, des options du style monitoring sur la table, le nombre d'ajout, de suppressions, de mises à jour ...) mais si vous avez plus d'infos, je veux bien. Pourquoi sur certaines tables volumineuses, il lui suffit de 5% alors que sur d'autres, il lui faut 100% ?
Merci d'avance pour vos informations, Laurent
--
Version Oracle utilisée : 9.2.0.6
-
j'imagine que plus la table est petite plus l'échantillon est grand
pour info : http://download.oracle.com/docs/cd/B...htm#sthref6735
-
Calcul des statistiques
Merci pour cette réponse et pour la documentation. Alors voici quelques valeurs de ma table de données :
Nom de la table Nb enregistrements sample_size %
============ ============== ========= ========
B 22608 3164 13,99
C 176120 40030 25
D 37358 12328 32,99
E 270973 89421 32,99
F 10 10 100
G 1321444 1321444 100
H 4846654 4846654 100
Du coup, j'ai l'impression que la taille de l'échantillon n'est pas proportionnelle au nombre d'enregistrements dans la table. Est-ce qu'il y a des paramètres sur les tables ? sur les index ? il y a-t-il différents algorithmes de statistiques (je pose simplement la question car je débute). Je ne vois pas trop et j'essaie d'y trouver une logique mais .... en vain pour l'instant. Si vous pouvez m'aider, me donner des infos concrètement, merci.
Merci d'avance, Laurent
--
Les noms de tables sont volontairement changés mais les données sont réelles et exactes.
-
oups, je recommence pour la mise en page, désolé :
Nom de la table - Nombre d'enregistrements - Sample_size - %
B - 22608 - 3164 - 13,99
C - 176120 - 40030 - 25
D - 37358 - 12328 - 32,99
E - 270973 - 89421 - 32,99
F - 10 - 10 - 100
G - 1321444 - 1321444 - 100
H - 4846654 - 4846654 - 100
-
C'est une bonne question et pour ca, il faudrait etre un pro en statistiques. Chaque statistique a ces propres besoins afin d'etre recevable.
Ci-dessous un extrait de la documentation Oracle.
http://download.oracle.com/docs/cd/B...ats.htm#i42181
While the sampling percentage can be set to any value, Oracle Corporation recommends setting the ESTIMATE_PERCENT parameter of the DBMS_STATS gathering procedures to DBMS_STATS.AUTO_SAMPLE_SIZE to maximize performance gains while achieving necessary statistical accuracy.
AUTO_SAMPLE_SIZE lets Oracle determine the best sample size necessary for good statistics, based on the statistical property of the object. Because each type of statistics has different requirements, the size of the actual sample taken may not be the same across the table, columns, or indexes.
When the ESTIMATE_PERCENT parameter is manually specified, the DBMS_STATS gathering procedures may automatically increase the sampling percentage if the specified percentage did not produce a large enough sample. This ensures the stability of the estimated values by reducing fluctuations.