点击上方蓝字关注我们

点击上方蓝字关注我们





VACUUM [表名];
VACUUM (VERBOSE, ANALYZE) [表名];
VACUUM FULL [表名];
基于阈值:当表中的更新、删除操作导致的"死"元组(即不再对任何事务可见的行版本)数量达到一定阈值时,自动VACUUM会被触发。这个阈值由几个配置参数决定,主要是 autovacuum_vacuum_threshold 和 autovacuum_vacuum_scale_factor。例如,如果一个表有 10000 行,autovacuum_vacuum_threshold 设置为 50,autovacuum_vacuum_scale_factor 设置为 0.2,那么当表中至少有 50 + 10000 * 0.2 = 2050 个死元组时,自动 VACUUM 会被触发。 基于事务ID的回绕防护:为了防止事务ID回绕(wraparound)问题,PostgreSQL会自动执行 VACUUM 操作以"冻结"旧版本的行,即将它们的事务ID标记为永久可见,以避免事务ID耗尽。
垃圾回收:自动VACUUM会清理表中不再需要的行版本(即"死"元组),释放被这些行版本占用的空间以供将来的插入操作使用。 防止事务ID回绕:通过"冻结"旧的行版本,自动VACUUM帮助避免事务ID回绕问题,确保数据库能长期稳定运行。 更新统计信息:自动VACUUM还会更新表和索引的统计信息,这对于查询优化器(planner/optimizer)制定有效的查询计划非常重要。 索引维护:自动VACUUM会清理和维护索引,移除指向已删除行的索引项,保持索引的效率和准确性。
autovacuum:启用或禁用自动VACUUM功能。 autovacuum_vacuum_scale_factor 和 autovacuum_vacuum_threshold:这两个参数合作决定了触发自动 VACUUM 的死元组数量阈值。 autovacuum_vacuum_cost_delay 和 autovacuum_vacuum_cost_limit:这些参数用于控制自动 VACUUM 对系统资源的使用,以减少它对数据库其他活动的影响。


文章转载自KunlunBase 昆仑数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





