Postgresql 上的真空和真空分析之间的真正区别是什么?

Luc*_*ini 6 postgresql

有什么区别:

vacuum;
Run Code Online (Sandbox Code Playgroud)

vacuum analyze; 
Run Code Online (Sandbox Code Playgroud)

我阅读了postgresql手册,但这对我来说仍然不是 100% 清楚。

我需要同时运行两者,还是其中一个就足够了?

Kár*_*agy 5

tl;dr 跑步vacuum analyze就足够了

因为vacuum analyze是 的完整超集vacuum。如果您运行vacuum analyze,则无需vacuum单独运行。请参阅邮件列表存档上的讨论。

分析是继真空之后的附加维护操作。它应该使表格上的统计数据保持最新。

清理并不是数据库需要的唯一定期维护。您还需要分析数据库,以便查询规划器在决定如何执行查询时可以使用表统计信息。简而言之:确保您足够频繁地运行 ANALYZE,最好是通过 autovacuum。并将 default_statistics_target (在 postgresql.conf 中)增加到 100。

更多信息:https://wiki.postgresql.org/wiki/Introduction_to_VACUUM,_ANALYZE,_EXPLAIN,_and_COUNT

  • 该维基页面似乎有点过时了。(“*并将 default_statistics_target (在 postgresql.conf 中)增加到 100*”)至少从版本 9.1 开始,100 一直是默认值 (2认同)