vacuumdb

vacuumdb — récupère l'espace inutilisé et, optionnellement, analyse une base de données PostgreSQL

Synopsis

vacuumdb [option-de-connexion...] [option...] [ --table | -t table [( colonne [,...] )] ] ... [nom_base]

vacuumdb [options-de-connexion...] [option...] --all | -a

Description

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(7). 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.

Options

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

Indique le nom de la base de données à nettoyer ou à analyser. Si aucun nom n'est pas précisé et si -a (ou --all) n'est pas utilisé, le nom de la base de données est récupéré dans la variable d'environnement PGDATABASE. Si cette variable n'est pas initialisée, c'est le nom d'utilisateur précisé pour la connexion qui est utilisé.

-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.

[Astuce]

Astuce

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

Spécifie le nom de la base de données à laquelle se connecter pour trouver les bases qui vont être nettoyées. Si elle n'est pas spécifiée, la base de données postgres est utilisée ; si elle n'existe pas, la base template1 est utilisée.

Environnement

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 31.14, « Variables d'environnement »).

Diagnostiques

En cas de difficultés, il peut être utile de consulter VACUUM(7) et psql(1), 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.

Notes

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 31.15, « Fichier de mots de passe » pour plus d'informations.

Exemples

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
   

Voir aussi

VACUUM(7)