Exécution de ANALYZE et VACUUM pour la maintenance
Dans cette étape, nous allons découvrir les commandes ANALYZE
et VACUUM
dans PostgreSQL, qui sont essentielles pour maintenir les performances de la base de données.
ANALYZE
met à jour les statistiques de la base de données utilisées par le planificateur de requêtes (query planner) pour choisir les plans d'exécution les plus efficaces. Ces statistiques décrivent le contenu des tables dans la base de données. Sans statistiques précises, le planificateur de requêtes pourrait faire de mauvais choix, ce qui entraînerait des performances de requête lentes.
VACUUM
récupère l'espace de stockage occupé par les tuples morts (dead tuples). Dans PostgreSQL, lorsqu'une ligne est mise à jour ou supprimée, l'ancienne version de la ligne n'est pas immédiatement supprimée. Au lieu de cela, elle est marquée comme morte. VACUUM
récupère l'espace occupé par ces tuples morts, le rendant disponible pour être réutilisé. Il met également à jour la carte de visibilité (visibility map), qui aide le planificateur de requêtes à déterminer quelles lignes sont visibles pour les transactions.
Exécutons ANALYZE
sur la table mytable
:
ANALYZE mytable;
Cette commande analyse la table mytable
et met à jour les statistiques. Vous ne verrez aucune sortie, mais les statistiques seront mises à jour en arrière-plan.
Ensuite, exécutons VACUUM
sur la table mytable
:
VACUUM mytable;
Cette commande récupère l'espace de stockage occupé par les tuples morts dans la table mytable
. Encore une fois, vous ne verrez aucune sortie, mais le processus de nettoyage (vacuuming process) s'exécutera en arrière-plan.
Pour un nettoyage plus agressif, vous pouvez utiliser VACUUM FULL
. Cependant, VACUUM FULL
verrouille la table de manière exclusive, empêchant d'autres opérations d'être effectuées sur la table pendant le processus de nettoyage. Il est généralement recommandé d'utiliser VACUUM
au lieu de VACUUM FULL
, sauf si vous avez une raison spécifique d'utiliser VACUUM FULL
.
-- VACUUM FULL mytable; -- Uncomment this line to run VACUUM FULL (use with caution)
Enfin, vous pouvez combiner ANALYZE
et VACUUM
en une seule commande :
VACUUM ANALYZE mytable;
Cette commande récupère d'abord l'espace de stockage occupé par les tuples morts, puis met à jour les statistiques. C'est souvent le moyen le plus efficace de maintenir les performances de la base de données.