ANALYZE

Nom

ANALYZE -- r�cup�re des statistiques sur une base de donn�es

Synopsis

ANALYZE [ VERBOSE ] [ table [ (colonne [, ...] ) ] ]

Description

ANALYZE collecte des statistiques sur le contenu des tables de la base de donn�es et stocke les r�sultats dans la table syst�me pg_statistic. L'optimiseur de requ�tes les utilise pour d�terminer les plans d'ex�cution les plus efficaces.

Sans param�tre, ANALYZE examine chaque table dans la base de donn�es en cours. Avec un param�tre, ANALYZE examine seulement cette table. Il est possible de donner une liste des noms de colonnes, auquel cas seules les statistiques concernant ces colonnes sont collect�es.

Param�tres

VERBOSE

Active l'affichage de messages de progression.

table

Le nom (�ventuellement pr�c�d� du nom du sch�ma) d'une table sp�cifique � analyser. Par d�faut, il s'agit de toutes les tables dans la base de donn�es en cours.

column

Le nom d'une colonne sp�cifique � analyser. Par d�faut, toutes les colonnes.

Sorties

Quand VERBOSE est sp�cifi�, ANALYZE �met des messages de progression pour indiquer quelle table est en cours de traitement. Sont aussi affich�es diff�rentes statistiques sur les tables.

Notes

Lancer p�riodiquement ANALYZE est une bonne id�e, tout comme le lancer apr�s de grosses modifications sur le contenu d'une table. Des statistiques � jour aideront l'optimiseur � choisir le plan de requ�te le plus appropri� et am�lioreront du coup la rapidit� du traitement des requ�tes. Une strat�gie habituelle est de lancer VACUUM et ANALYZE une fois par jour au moment o� le serveur est le moins sollicit�.

Contrairement � VACUUM FULL, ANALYZE requiert seulement un verrou en lecture sur la table cible, donc il peut �tre lanc� en parall�le � d'autres activit�s sur la table.

Les statistiques r�cup�r�es par ANALYZE incluent habituellement une liste des quelques valeurs les plus communes dans chaque colonne et un histogramme affichant une distribution approximative des donn�es dans chaque colonne. L'un ou l'autre pourraient �tre omis si ANALYZE les trouve inint�ressants (par exemple, dans une colonne � cl� unique, il n'y a pas de valeurs communes) ou si le type de donn�es de la colonne ne supporte pas les op�rateurs appropri�s. Il y a plus d'informations sur les statistiques dans le Chapitre 21.

Pour les grosses tables, ANALYZE prend al�atoirement plusieurs lignes de la table, au hasard, plut�t que d'examiner chaque ligne. Ceci permet � des tables tr�s larges d'�tre examin�es dans une petite p�riode de temps. Notez, n�anmoins, que les statistiques sont seulement approximatives et qu'elles changeront l�g�rement � chaque fois qu'ANALYZE est lanc�, m�me si le contenu r�el de la table n'a pas chang�. Ceci pourrait r�sulter en de petites modifications dans les co�ts estim�s de l'optimiseur affich�s par EXPLAIN. Dans de rare situations, ce non-d�terminisme causera le choix d'un plan de requ�te diff�rent par l'optimiseur entre deux lancements d'ANALYZE. Pour �viter ceci, augmentez le nombre de statistiques r�cup�r�es par ANALYZE, comme d�crit ci-dessous.

L'�tendue des analyses est contr�lable globalement en ajustant la variable de configuration default_statistics_target ou colonne par colonne en initialisant la cible des statistiques par colonne avec ALTER TABLE ... ALTER COLUMN ... SET STATISTICS (voir ALTER TABLE). Cette valeur cible initialise le nombre maximum d'entr�es dans la liste des valeurs les plus communes et le nombre maximum de points dans l'histogramme. La valeur cible par d�faut est de 10 mais ceci peut �tre ajust� en prenant compte la pr�cision des estimations de l'optimiseur, le temps pris par ANALYZE et l'espace total occup� dans pg_statistic. En particulier, initialiser la cible des statistiques � z�ro d�sactive la r�cup�ration de statistiques pour cette colonne. Il pourrait �tre utile de le faire pour les colonnes qui ne sont jamais utilis�es dans les clauses WHERE, GROUP BY ou ORDER BY de requ�tes car l'optimiseur n'utilisera pas les statistiques pour ces colonnes.

La plus grande cible de statistiques de toutes les colonnes en cours d'analyse d�termine le nombre de lignes test�es pour pr�parer les statistiques de la table. Augmenter cette cible cause une augmentation proportionnelle du temps et de l'espace n�cessaires � ex�cuter ANALYZE.

Compatibilit�

Il n'existe pas d'instruction ANALYZE dans le standard SQL.