autovacuum
Le démon qui supprime les lignes mortes et rafraîchit les statistiques du planificateur, actif par défaut dès lors que track_counts l'est aussi. Il ne tourne pas en continu, et c'est là que l'intuition se trompe. Il se réveille une fois par minute (autovacuum_naptime) et ne nettoie une table que lorsque ses lignes mortes dépassent autovacuum_vacuum_threshold plus autovacuum_vacuum_scale_factor fois son nombre de lignes, soit 50 + 0.2 × lignes. Sur une table de dix millions de lignes : deux millions de lignes mortes avant le premier passage. Une grande table très sollicitée en écriture gonfle donc bien avant qu'autovacuum ne la touche. La correction se pose table par table, avec ALTER TABLE orders SET (autovacuum_vacuum_scale_factor = 0.02), et non sur le serveur entier — sinon toutes les petites tables sont nettoyées pour rien. Aucun réglage n'y suffit tant qu'une session reste idle in transaction : une ligne morte encore visible par une transaction plus ancienne ne part pas.
Aussi écrit : vacuum, autovacuum_vacuum_scale_factor
