Как я могу узнать, работает ли Autovacuum в PostgreSQL в UNIX?
Как можно определить, работает ли демон автоочистки в Postgres 9.x и поддерживает ли кластер базы данных?
4 ответа
PostgreSQL 9.3
Определите, работает ли автовакуум
Это относится к Postgres 9.3 в UNIX. Для Windows смотрите этот вопрос.
Запрос Postgres System Table
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, то документация Posgres гласит:
В конфигурации по умолчанию автоочистка включена, и соответствующие параметры конфигурации установлены соответствующим образом.
Смотрите также:
Я использую:
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", поэтому измените его в соответствии с тем, что работает.
установите log_autovacuum_min_duration на желаемую продолжительность времени, и выполнение автоочистки превысит продолжительность времени, которая будет зарегистрирована.
Вы также можете запустить pg_activity, чтобы увидеть текущие запросы к вашей базе данных. Обычно я все равно оставляю терминал открытым, так как он очень полезен.