PostgreSQL查看长时间未被autovacuum的表

215 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天

由于PostgreSQL的多版本机制,使得经常被使用的表需要进行vacuum来回收哪些dead tuples,尽管pg有autovacuum进程去在后台vaccum相关的表,但是我们仍需要去监控哪些表长时间未被autovaccum过。

SELECT 
    schemaname
    ,relname
    ,n_live_tup
    ,n_dead_tup
    ,last_autovacuum
FROM pg_stat_all_tables
ORDER BY n_dead_tup
    /(n_live_tup
      * current_setting('autovacuum_vacuum_scale_factor')::float8
      + current_setting('autovacuum_vacuum_threshold')::float8)
     DESC;

开发者涨薪指南

48位大咖的思考法则、工作方式、逻辑体系