首页 > 数据库 > PostgreSQL > anayze和vacuum区别
anayze 是收集统计信息,用于查询分析优化
举例如下:
bsc_dict 实际总数量是52949

此时系统表pg_stat_user_tables的信息如下
n_live_tup,n_dead_tup 都是0
未收集统计信息的状态

收集统计信息
analyze bsc_dict
或者输出详细
ANALYZE VERBOSE bsc_dict ;
结果如下
n_live_tup=52949,n_dead_tup=22 都产生相应变化

发现n_dead_tup 有死元组
回收死元组
注意此动作会锁表
vacuum full bsc_dict;
执行完成发现 空间已经释放,但是pg_stat_user_tables 数据没有变化

需要重新收集统计信息
ANALYZE VERBOSE bsc_dict ;
如下图 n_dead_tup 变为0

根据以上 我们获取结论
VACUUM FULL 清理
物理存储,不一定更新
统计信息
pg_stat_user_tables.n_dead_tup 是统计信息,不是实时数据
清理后
必须执行
ANALYZE 更新统计,才能获取n_dead_tup的真实信息
下图是deepseek获取的具体区别

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30127122/viewspace-3106823/ ,如需转载,请注明出处,否则将追究法律责任。