autovacuum具体开始时间取决于表的活动情况以及配置参数的设置,如:autovacuum_naptime-两次自动清理操作之间的间隔时间和死元组数量阈值,查询具体开始时间大致两个办法:
1.时间同步(非必须)
修改为本地时区
sudo timedatectl set-timezone Asia/Shanghai
复制
安装并启用 NTP 服务(略)
修改postgresql.conf
timezone = 'PRC'
log_timezone = 'PRC'
复制
2、通过SQL查询正在运行的autovacuum的开始时间
select pid, datname as db, query_start as start, query from pg_stat_activity where state <> 'idle' and query like '%autovacuum%';
复制
3、通过日志查询已完成的autovacuum的开始时间
设置log_autovacuum_min_duration 参数,当 autovacuum 操作的执行时间超过该值时,相关信息会被记录到日志中。例如,将该参数设置为 0,则所有 autovacuum 操作都会被记录
logging_collector = on
log_directory = 'pg_log' # 日志文件存放目录
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # 日志文件名格式
...
autovacuum = on
log_autovacuum_min_duration=0
autovacuum_work_mem = -1
复制
如果发生了autovacuum,在log中应该可以查知。