Accéder au contenu principal
Documents
Gestion des tableaux et des schémasSyntaxe de baseDéclencheursBases de donnéesFonctions de la dateFonctions des chaînes de caractèresFonctions mathématiquesFonctions JSONIndexes

PostgreSQL VACUUM

La commande `VACUUM` de PostgreSQL est utilisée pour nettoyer et optimiser le stockage des bases de données en récupérant l'espace occupé par les tuples morts. Il garantit le fonctionnement efficace de la base de données en empêchant le gonflement et en maintenant la santé des tableaux de la base de données.

Utilisation

La commande `VACUUM` est utilisée pour récupérer de l'espace de stockage et améliorer les performances d'E/S en supprimant les données obsolètes. Elle est généralement utilisée après que les tableaux ont fait l'objet de mises à jour ou de suppressions importantes.

VACUUM [FULL] [FREEZE] [VERBOSE] [table_name];

Dans cette syntaxe, `VACUUM` est suivi de paramètres optionnels :

  • `FULL` pour un nettoyage plus approfondi,
  • `FREEZE` pour marquer agressivement les tuples comme gelés, évitant ainsi les problèmes de contournement de l'ID de la transaction,
  • `VERBOSE` pour une sortie détaillée,
  • et `nom_table` spécifie le tableau à aspirer.

Exemples

1. Vide de base

VACUUM;

Cette commande effectue une opération d'aspiration standard sur tous les tableaux de la base de données actuelle afin de libérer l'espace inutilisé.

2. Aspirer un tableau spécifique

VACUUM VERBOSE employees;

Cet exemple vide le tableau `employees` et fournit des informations détaillées sur l'opération grâce à l'option `VERBOSE`.

3. Vide complet sur un tableau

VACUUM FULL products;

`VACUUM FULL` est utilisé pour récupérer complètement l'espace du tableau `products`. Il verrouille le tableau pendant le processus, ce qui peut bloquer à la fois les écritures et les lectures, mais permet une récupération maximale de l'espace.

Conseils et bonnes pratiques

  • Courez régulièrement. Planifiez des opérations de vide de routine, en particulier sur les tableaux fréquemment mis à jour, afin d'éviter l'engorgement de la base de données.
  • Envisagez d'utiliser `AUTOVACUUM`. Activez et configurez `AUTOVACUUM` pour automatiser le processus d'aspiration et réduire la maintenance manuelle.
  • Utilisez `FULL` avec parcimonie. Réservez `VACUUM FULL` aux situations où un espace important doit être récupéré, car il verrouille le tableau et peut être gourmand en ressources.
  • Contrôler les performances. Utilisez `VERBOSE` pour obtenir des informations sur le processus d'aspiration et ajuster les configurations en fonction des résultats.
  • Comprendre l'enveloppement des transactions. Videz régulièrement les tableaux afin d'éviter les problèmes d'enveloppement de l'ID de transaction, qui peuvent entraîner une perte de données.
  • Soyez attentif à l'impact sur les performances. Bien qu'un `VACUUM` standard soit moins perturbant qu'un `VACUUM FULL`, il peut tout de même avoir un impact sur les performances de très grandes bases de données.