| Documentation PostgreSQL 7.2 | ||
|---|---|---|
| <<< Previous | Next >>> | |
ANALYZE [ VERBOSE ] [ table [ (column [, ...] ) ] ] |
ANALYZE collecte des statistiques sur le contenu des tables PostgreSQL, et stocke les résultats dans la table système pg_statistic. Consécutivement, l'optimiseur de requêtes utilisera ces statistiques pour s'aider à déterminer les plans d'exécution les plus efficaces pour les requêtes.
Sans paramètres, ANALYZE examine chaque table de la base. Avec un paramètre, ANALYZE examines seulement cette table. Il est de plus possible de donner une liste de noms de colonnes, auquel cas seules les statistiques pour ces colonnes sont mises à jour.
C'est une bonne idée de lancer ANALYZE periodiquement, ou juste après avoir fait des changements importants dans une table. Des statistiques précises aideront l'optimiseur à choisir le plan de requête le plus approprié, et de ce fait d'améliorer la vitesse du traitement des requêtes. Une stratégie commune est de lancer VACUUM et ANALYZE une fois par jour pendant la période de faible utilisation.
De manière différente à VACUUM FULL, ANALYZE nécessite seulement un verrou en lecture sur la table cible, ainsi il peut être lancé en parallèle avec d'autres activités sur la table.
Pour les grosses tables, ANALYZE prend un échantillon au hasard dans le contenu de la table, d'avantage qu'il examine chaque ligne. Ceci permet même aux très grosses tables d'être analysées en une faible période de temps. Notez cependant, que les statistiques sont seulement approximatives, et seront modifiées chaque fois que ANALYZE est lancé, même si les contenus de la table ne changent pas. Ceci peut provoquer de petites modifications dans les coûts estimés par l'optimiseur comme il l'indique dans EXPLAIN.
Les statistiques collectées incluent habituellement une liste de quelques unes des valeurs les plus communes dans chaque colonne et un histogramme indiquant la distribution approximative des données dans chaque colonne. L'une ou les deux de celles-çi peuvent être omises si ANALYZE les estime inintéressantes (par exemple, dans une colonne à clé-unique, il n'y a pas de valeurs communes) ou si le type de la colonne ne supporte pas les opérateurs appropriés. Pour plus d'information sur les statistiques voir le Guide de l'utilisateur.
L'étendue de l'analyse peut être contrôlée en ajustant par colonne la cible statistique avec ALTER TABLE ALTER COLUMN SET STATISTICS (voir ALTER TABLE). La valeur cible place le nombre maximum d'entrées dans la liste des valeurs les plus communes et le nombre maximum de binaires dans l'histogramme. La valeur cible par défaut est 10, mais ceci peut être ajusté en plus ou en moins au niveau de l'exactitude des estimations de l'optimiseur par rapport au temps pris par ANALYZE et la montant d'espace occupé dans pg_statistic. En particulier, le placement des cibles statistiques à zero désactive l'ensemble des statistiques pour la colonne. Il peut être pratique de faire que les colonnes qui n'ont jamais été utilisées dans les clauses WHERE, GROUP BY, ou ORDER des requêtes, depuis l'optimiseur ne soient pas utilisées pour les statistiques.
La cible statistique la plus importante parmi les colonnes analysées détermine le nombre de lignes de table échantillonnées pour servir à la statistique. Augmenter la cible provoque un accroissement proportionnel en temps et en espace nécessaire pour ANALYZE.
| <<< Previous | Home | Next >>> |
| ALTER USER | Up | BEGIN |