VACUUM

Name

VACUUM  --  nettoie et optionnellement analyse une base.

Synopsis

VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]
  

Entrées

FULL

Selectionne un vacuum "complet", ce qui peut réclamer plus d'espace, mais prend plus de temps et verrouille une table de façon exclusive.

FREEZE

Selectionne le "gel" agressif de tuples.

VERBOSE

Imprime un rapport détaillé sur le nettoyage de la table.

ANALYZE

Met à jour les statistiques de colonne utilisées par l'optimiseur pour déterminer le moyen le plus efficace d'exécuter une requête.

table

Le nom d'une table spécifique à nettoyer. Par défaut toutes les tables.

column

Nom d'une colonne spécifique à nettoyer. Par défaut toutes les colonnes.

Sorties

VACUUM

La commande est complète.

NOTICE: --Relation table--

L'en-tête du rapport pour table.

NOTICE: Pages 98: Changed 25, Reapped 74, Empty 0, New 0; Tup 1000: Vac 3000, Crash 0, UnUsed 0, MinLen 188, MaxLen 188; Re-using: Free/Avail. Space 586952/586952; EndEmpty/Avail. Pages 0/74. Elapsed 0/0 sec.

L'analyse de la table elle-même.

NOTICE: Index index: Pages 28; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.

L'analyse d'un index sur la table cible.

Description

VACUUM récupère le stockage occupé par les tuples supprimés. Dans une opération Postgres normale, les tuples supprimés ou rendus obsolètes par un UPDATE ne sont pas physiquement supprimés de leur table; ils restent présent jusqu'à ce qu'un VACUUM soit fait. D'autre part, il est nécesaire de faire un VACUUM periodiquement, spécialement sur la tables fréquemment mise à jour.

Sans paramètre, VACUUM traite chaque table de la base. Avec un paramètre, VACUUM traite seulement cette table.

VACUUM ANALYZE exécute un VACUUM et un ANALYZE pour chaque table sélectionnée. C'est une combinaison de forma maniable pour les routines de scripts de maintenance. Voir ANALYZE pour plus de détails.

Un VACUUM plein (sans FULL) récupère simplement l'espace et le rend disponible pour ré-utilisation. Cette forme de la commande peut opérer en parallèle avec la lecture et l'écriture normales sur une table. VACUUM FULL rend le processus plus extensif, incluant le déplacement de tuples à travers les blocs pour essayer de compacter la table au nombre de blocs disques minimum. Cette forme est plus lente et requiert un verrou exclusif sur chaque table lors du traitement.

FREEZE est une option spéciale qui fait que les tuples sont marqués "frozen" aussi tôt que possible, d'avantage que d'attendre qu'ils soient tout à fait vieux. Si ceci est fait quand il n'y a pas d'autres transactions en cours dans la même base, alors il est garanti que tous les tuples de la base seront "frozen" et ne seront pas sujets à des problèmes de bouclage d'ID transaction. FREEZE n'est pas recommendé pour un usage de routine. C'est seulement pour une utilisation en connexion avec la préparation de gabarits de bases utiliseurs, ou autres bases qui sont en lecture seule et ne reçoivent pas des opérations de routines de maintenance VACUUM. Voir le Guide de l'administrateur pour les détails.

Notes

Nous recommendons que les bases en production actives soient VACUUM fréquemment (au moins la nuit), afin de supprimer les lignes ayant expirées. Après l'ajout ou la suppression d'un grand nombre d'enregistrements, il peut être utile de faire un VACUUM ANALYZE sur la table concernée. Ceci mettra à jour le catalogue système avec les résultats de tous les changements récents, et permet à l'optimiseur de requête de PostgreSQL de faire de meilleurs choix.

L'option FULL n'est pas recommendée pour un usage en tant que routine, mais peut être utile dans des cas spéciaux. Un exemple est quand vous avez supprimé la plupart des lignes d'une table et voulez que la table occupe physiquement le moins d'espace possible. VACUUM FULL compactera la table d'avantage qu'un VACUUM le fera.

Utilisation

Ci-dessous un exemple de VACUUM sur une table dans la base regression :

regression=> VACUUM VERBOSE ANALYZE onek;
NOTICE:  --Relation onek--
NOTICE:  Index onek_unique1: Pages 14; Tuples 1000: Deleted 3000.
        CPU 0.00s/0.11u sec elapsed 0.12 sec.
NOTICE:  Index onek_unique2: Pages 16; Tuples 1000: Deleted 3000.
        CPU 0.00s/0.10u sec elapsed 0.10 sec.
NOTICE:  Index onek_hundred: Pages 13; Tuples 1000: Deleted 3000.
        CPU 0.00s/0.10u sec elapsed 0.10 sec.
NOTICE:  Index onek_stringu1: Pages 31; Tuples 1000: Deleted 3000.
        CPU 0.01s/0.09u sec elapsed 0.10 sec.
NOTICE:  Removed 3000 tuples in 70 pages.
        CPU 0.02s/0.04u sec elapsed 0.07 sec.
NOTICE:  Pages 94: Changed 0, Empty 0; Tup 1000: Vac 3000, Keep 0, UnUsed 0.
        Total CPU 0.05s/0.45u sec elapsed 0.59 sec.
NOTICE:  Analyzing onek
VACUUM
   

Compatibilité

SQL92

Il n'y a pas d'instruction VACUUM en SQL92.