VACUUM FULL ANALYZE 详解
一、核心功能
-
空间回收与重组
- 完全重写表数据文件,将碎片化的存储空间合并并返还操作系统(普通 VACUUM 仅标记空间可重用)。
- 彻底清理死元组(已删除或更新的旧数据行),解决因频繁增删改导致的存储膨胀问题。
-
统计信息更新
- 同步执行 ANALYZE,收集最新的表数据分布统计信息(如列值基数、空值比例等),优化查询计划生成。
二、适用场景
- 存储严重碎片化:当表因长期高频更新导致空间利用率低于 50% 时。
- 事务 ID 接近回卷:预防因事务 ID 耗尽导致的数据库写入阻塞。
- 大表性能骤降:查询计划因统计信息过期频繁选择低效路径
三、编写脚本
脚本内容:
bash
#!/bin/bash
export PGPASSWORD='abX123ads'
psql -p 5431 -U postgres -d gx_szab_db -h 10.168.4.153 \
-c "VACUUM FULL ANALYZE \"JJDB\";" >> /data/vacuum_full_analyze.log 2>&1
psql -p 5431 -U postgres -d gx_szab_db -h 10.168.4.153 \
-c "VACUUM FULL ANALYZE t_gx_key_person;" >> /data/vacuum_full_analyze.log 2>&1
脚本位置:

配置cron表达式 每五分钟执行一次:

查看日志执行结果:
