暂无图片
autovacuum清理的开始和结束时间
我来答
分享
暂无图片 匿名用户
autovacuum清理的开始和结束时间

autovacuum清理的开始和结束时间

通过pg_stat_all_tables 中的last_autovacuum 时间应该是结束时间,那么开始时间从那里记录?


比如有个表tab002  再pg_stat_all_tables  中记录的last_autovacuum 是上午10点,这个应该是它的结束时间,

想知道它的开始时间是多少?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
梧桐

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中应该可以查知。

暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交