vacuumdb — récupère l'espace inutilisé et, optionnellement, analyse une base de données PostgreSQL
vacuumdb
[option-de-connexion
...] [option
...]
[
-t
| --table
table
[( colonne
[,...] )]
]
... [nom_base
]
vacuumdb
[options-de-connexion
...] [option
...] -a
| --all
vacuumdb est un outil de nettoyage d'une base de données. vacuumdb peut également engendrer des statistiques internes utilisées par l'optimiseur de requêtes de PostgreSQL.
vacuumdb est une surcouche de la commande VACUUM. Il n'y a pas de différence réelle entre exécuter des VACUUM et des ANALYZE sur les bases de données via cet outil et via d'autres méthodes pour accéder au serveur.
vacuumdb accepte les arguments suivants sur la ligne de commande :
-a
--all
Nettoie toutes les bases de données.
[-d] nom_base
[--dbname=]nom_base
Spécifie le nom de la base à nettoyer ou à analyser quand l'option
-a
/--all
n'est pas utilisée. Si le
nom de la base n'est pas fourni, il est lu à partir de la variable
d'environnement PGDATABASE
. Si elle n'est pas
configurée, le nom de l'utilisateur pour la connexion est utilisé. Ce
nom de base peut être remplacé par une chaîne de connexion. Dans ce cas, les
paramètres de la chaîne de connexion surchargeront toutes les options
en ligne de commande conflictuelles.
-e
--echo
Affiche les commandes que vacuumdb engendre et envoie au serveur.
-f
--full
Exécute un nettoyage « complet ».
-F
--freeze
« Gèle » agressivement les lignes.
-j njobs
--jobs=njobs
Exécute les commandes VACUUM et/ou ANALYZE en parallèle en plaçant
njobs
commandes
simultanément. Cette option réduit la durée du traitement tout en
augmentant la charge sur le serveur de bases de données.
vacuumdb ouvrira
njobs
connexions sur la
base de données, donc assurez-vous que votre configuration du paramètre
max_connections est suffisament élevée pour
accepter toutes les connexions nécessaires.
Notez que l'utilisation de ce mode avec l'option -f
(FULL
) pourrait causer des échecs de type deadlock
si certains catalogues systèmes sont traités en parallèle.
-q
--quiet
N'affiche pas de message de progression.
-t table
[ (colonne
[,...]) ]
--table=table
[ (colonne
[,...]) ]
Ne nettoie ou n'analyse que la table
table
.
Des noms de colonnes peuvent être précisés en conjonction avec les
options --analyze
ou --analyze-only
.
Plusieurs tables peuvent être traitées par VACUUM en utilisant plusieurs
fois l'option -t
.
Lorsque des colonnes sont indiquées, il peut être nécessaire d'échapper les parenthèses. (Voir les exemples plus bas.)
-v
--verbose
Affiche des informations détaillées durant le traitement.
-V
--version
Affiche la version de vacuumdb, puis quitte.
-z
--analyze
Calcule aussi les statistiques utilisées par le planificateur.
-Z
--analyze-only
Calcule seulement les statistiques utilisées par le planificateur (donc pas de VACUUM).
--analyze-in-stages
Calcule seulement les statistiques utilisées par le planificateur
(donc pas de VACUUM), comme --analyze-only
. Effectue
plusieurs (pour le moment trois) étapes de calcul avec différents
réglages de configuration afin de générer des statistiques utilisables
plus rapidement.
Cette option est utile pour calculer les statistiques d'une base qui
vient d'être peuplée, que cela soit à partir d'une restauration de
sauvegarde ou d'un pg_upgrade
. Cette option tentera
de créer quelques statistiques le plus rapidement possible, pour rendre
la base de données utilisable, et ensuite produire les statistiques
complètes durant les étapes suivantes.
-?
--help
Affiche l'aide sur les arguments en ligne de commande de vacuumdb, puis quitte.
vacuumdb accepte aussi les arguments suivants comme paramètres de connexion :
-h hôte
--host=hôte
Indique le nom d'hôte de la machine qui héberge le serveur de bases de données. Si la valeur commence par une barre oblique (/), elle est utilisée comme répertoire pour la socket de domaine Unix.
-p port
--port=port
Indique le port TCP ou le fichier local de socket de domaine Unix sur lequel le serveur attend les connexions.
-U utilisateur
--username=utilisateur
Nom d'utilisateur pour la connexion.
-w
--no-password
Ne demande jamais un mot de passe. Si le serveur en réclame un pour
l'authentification et qu'un mot de passe n'est pas disponible d'une autre
façon (par exemple avec le fichier .pgpass
), la
tentative de connexion échouera. Cette option peut être utile pour les
scripts où aucun utilisateur n'est présent pour saisir un mot de passe.
-W
--password
Force vacuumdb à demander un mot de passe avant la connexion à une base de données.
Cette option n'est jamais obligatoire car
vacuumdb demandera automatiquement un
mot de passe si le serveur exige une authentification par mot de
passe. Néanmoins, vacuumdb perdra une
tentative de connexion pour trouver que le serveur veut un mot de
passe. Dans certains cas, il est préférable d'ajouter l'option
-W
pour éviter la tentative de connexion.
--maintenance-db=nom-base-maintenance
Indique le nom de la base où se connecter pour récupérer la liste des
bases pour lesquelles il faut exécuter un nettoyage via VACUUM. Cette
option est intéressante quand l'option
-a
/--all
est utilisée. Si cette
option n'est pas ajoutée, la base postgres
sera
utilisée. Si cette base n'existe pas, la base
template1
sera utilisée. Le nom de la base peut être
remplacé par une chaîne de
connexion. Dans ce cas, les paramètres de la chaîne de connexion
surchargeront les options en ligne de commande conflictuelles. De plus,
les paramètres de la chaîne de connexion autres que le nom de la base
lui-même seront réutilisés lors de la connexion aux autres bases.
PGDATABASE
PGHOST
PGPORT
PGUSER
Paramètres de connexion par défaut.
Cet outil, comme la plupart des autres outils PostgreSQL, utilise aussi les variables d'environnement supportées par la bibliothèque libpq (voir Section 34.14).
En cas de difficultés, il peut être utile de consulter VACUUM et psql, sections présentant les problèmes éventuels et les messages d'erreur.
Le serveur de base de données doit fonctionner sur le serveur cible. Les paramètres de connexion éventuels et les variables d'environnement utilisés par la bibliothèque cliente libpq s'appliquent.
vacuumdb peut avoir besoin de se connecter
plusieurs fois au serveur PostgreSQL. Afin d'éviter
de saisir le mot de passe à chaque fois, on peut utiliser
un fichier ~/.pgpass
. Voir Section 34.15 pour plus d'informations.
Pour nettoyer la base de données test
:
$
vacuumdb test
Pour nettoyer et analyser une base de données nommée
grossebase
:
$
vacuumdb --analyze grossebase
Pour nettoyer la seule table
foo
dans une base de données nommée
xyzzy
et analyser la seule colonne
bar
de la table :
$
vacuumdb --analyze --verbose --table='foo(bar)' xyzzy