Comment savoir si le démon autovacuum dans Postgres 9.x exécute et maintient le cluster de base de données?
Ceci est spécifique à Postgres 9.3 sous UNIX. Pour Windows, voyez ceci question .
SELECT
schemaname, relname,
last_vacuum, last_autovacuum,
vacuum_count, autovacuum_count -- not available on 9.0 and earlier
FROM pg_stat_user_tables;
$ ps -axww | grep autovacuum
24352 ?? Ss 1:05.33 postgres: autovacuum launcher process (postgres)
# grep autovacuum /var/log/postgresql
LOG: autovacuum launcher started
LOG: autovacuum launcher shutting down
Si vous souhaitez en savoir plus sur l'activité autovacuum , définissez log_min_messages
à DEBUG1..DEBUG5
. La commande SQL VACUUM VERBOSE
affichera des informations au niveau du journal INFO
.
Concernant le démon Autovacuum, les documents Posgres indiquent:
Dans la configuration par défaut, la mise sous vide automatique est activée et les paramètres de configuration associés sont correctement définis.
Voir également:
J'utilise:
select count(*) from pg_stat_activity where query like 'autovacuum:%';
dans collectd pour savoir combien d'autovacuum fonctionnent simultanément.
Vous devrez peut-être créer une fonction de sécurité comme celle-ci:
CREATE OR REPLACE FUNCTION public.pg_autovacuum_count() RETURNS bigint
AS 'select count(*) from pg_stat_activity where query like ''autovacuum:%'';'
LANGUAGE SQL
STABLE
SECURITY DEFINER;
et appelez ça depuis collectd.
Dans les Postgres précédents, "query" était "current_query", alors changez-le en fonction de ce qui fonctionne.
Vous pouvez également exécuter pg_activity pour voir les requêtes en cours d'exécution sur votre base de données. En général, je laisse un terminal ouvert et cela fonctionne la plupart du temps car c'est très utile.