---
url: /articles/maintenance.md
description: >-
  Cette page regroupe des séries d'article sur PostgreSQL en français concernant
  les opérations de maintenance de la base de données
---

# Maintenance

Voici les principales opérations de maintenance possibles sous **PostgreSQL** pour assurer la performance,
la fiabilité et la durabilité de votre base de données:

## VACUUM

* **But** : Nettoyer les lignes mortes (tuples) laissées par les mises à jour ou suppressions, libérer de l’espace et éviter le gonflement des tables.
* **Variantes** :
  * `VACUUM` : Nettoyage standard.
  * `VACUUM FULL` : Réorganise physiquement la table, plus lent mais plus efficace.
  * `VACUUM ANALYZE` : Nettoie et met à jour les statistiques pour l’optimiseur de requêtes.

## ANALYZE

* **But** : Mettre à jour les statistiques utilisées par l’optimiseur de requêtes pour générer des plans d’exécution optimaux.
* **Utilisation** : Souvent combiné avec `VACUUM` (`VACUUM ANALYZE`).

## REINDEX

* **But** : Reconstruire les index corrompus ou fragmentés.
* **Utilisation** : `REINDEX TABLE ma_table;` ou `REINDEX DATABASE ma_base;`

## CLUSTER

* **But** : Réorganiser physiquement une table selon un index pour améliorer les performances de lecture.
* **Utilisation** : `CLUSTER ma_table USING mon_index;`

## Maintenance des logs et archives WAL

* **But** : Gérer les fichiers de journalisation (WAL) pour la réplication et la récupération après incident.
* **Actions** :
  * Archiver les WAL (`archive_command`).
  * Nettoyer les anciens WAL (`pg_archivecleanup`).

## Gestion des connexions et verrous

* **But** : Identifier et résoudre les blocages ou connexions bloquantes.
* **Outils** :
  * `pg_stat_activity` : Voir les connexions actives.
  * `pg_locks` : Voir les verrous.

## Mise à jour des statistiques système

* **But** : Assurer que PostgreSQL dispose des informations les plus récentes sur la distribution des données.
* **Utilisation** : `ANALYZE;` ou `VACUUM ANALYZE;`

## **Gestion de l’autovacuum**

* **But** : Configurer le processus automatique de nettoyage (`autovacuum`) pour éviter les interventions manuelles.
* **Paramètres** : `autovacuum`, `autovacuum_vacuum_threshold`, etc.

## Vérification de l’intégrité des données

* **But** : Détecter les corruptions de données.
* **Outils** : `pg_checksums` (si activé), `pg_verifybackup`.

## Quand les utiliser ?

* **Régulièrement** : `VACUUM`, `ANALYZE`, surveillance des logs.
* **Après des opérations massives** : `REINDEX`, `CLUSTER`.
* **En cas de problème** : Vérification des verrous, intégrité des données.

## Articles Divers

* [Analyse du
  VACUUM](https://web.archive.org/web/20181129020959/http://blog.guillaume.lelarge.info/index.php/category/Postgresql)
* [Comment quantifier le
  maintenance\_work\_mem](https://web.archive.org/web/20181128143819/http://blog.guillaume.lelarge.info/index.php/post/2015/07/14/Comment-quantifier-le-maintenance_work_mem)
* [Liste et taille des bases, des schémas et des tables en
  postgreSQL](http://laetitia-avrot.blogspot.fr/2011/04/psql.html)
