Как можно сказать, работает ли autovacuum daemon в Postgres 9.x и поддерживает кластер базы данных?
Как узнать, работает ли PostgreSQL Autovacuum в UNIX?
Ответ 1
PostgreSQL 9.3
Определите, работает ли автовакуум
Это относится к Postgres 9.3 в UNIX. Для Windows см. Этот вопрос.
Таблица системных сообщений Postgres
SELECT
schemaname, relname,
last_vacuum, last_autovacuum,
vacuum_count, autovacuum_count -- not available on 9.0 and earlier
FROM pg_stat_user_tables;
Состояние процесса системы Grep
$ ps -axww | grep autovacuum
24352 ?? Ss 1:05.33 postgres: autovacuum launcher process (postgres)
Grep Postgres Log
# grep autovacuum /var/log/postgresql
LOG: autovacuum launcher started
LOG: autovacuum launcher shutting down
Если вы хотите узнать больше об активности автовакуума, установите log_min_messages
в DEBUG1..DEBUG5
. Команда SQL VACUUM VERBOSE
выводит информацию на уровне журнала INFO
.
Что касается Autovacuum Daemon, в документах Posgres говорится:
В конфигурации по умолчанию включена автоматическая активация и соответствующие параметры конфигурации установлены соответствующим образом.
См. также:
Ответ 2
Я использую:
select count(*) from pg_stat_activity where query like 'autovacuum:%';
чтобы узнать, сколько автовакумов работает одновременно.
Возможно, вам потребуется создать функцию безопасности, например:
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;
и вызовите это из коллектора.
В более ранних Postgres "query" был "current_query", поэтому измените его в соответствии с тем, что работает.
Ответ 3
Вы также можете запустить pg_activity, чтобы просмотреть текущие запросы в базе данных. Обычно я оставляю терминал открытым, так как это работает в большинстве случаев, поскольку он очень полезен.