PostgreSQL 清理与统计信息维护
vacuumdb 是 VACUUM / ANALYZE 的命令行封装,用来回收死元组、更新统计信息、防止事务 ID 回卷。日常维护通常交给 autovacuum,特殊场景才手工执行。
vacuumdb -d appdb --analyze
vacuumdb --all --analyze --jobs=4
vacuumdb -d appdb -t orders --vacuum --analyze --verbose
vacuumdb -d appdb --full -t orders # 会长时间持锁
vacuumdb -d appdb --freeze --all
vacuumdb -d appdb --dry-run --all --analyze
VACUUM FULL 会重写整表并持有排他锁;生产环境优先 pg_repack 或维护窗口。idle in transaction 会阻止死元组回收;先查 pg_stat_activity。--analyze 只更新统计信息,不回收空间;--vacuum 也不等同于 FULL。--jobs 只能和 --all 或 -d 的部分模式配合;不是所有版本都支持。--freeze 会加速冻住旧元组,但可能增加 I/O;按版本行为确认。reindexdb — 重建索引psql — 查看 pg_stat_activity 和表膨胀pg_dump — 维护前备份