Подтвердить что ты не робот

Как узнать, работает ли PostgreSQL Autovacuum в UNIX?

Как можно сказать, работает ли autovacuum daemon в Postgres 9.x и поддерживает кластер базы данных?

4b9b3361

Ответ 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, чтобы просмотреть текущие запросы в базе данных. Обычно я оставляю терминал открытым, так как это работает в большинстве случаев, поскольку он очень полезен.