什么时候应该真空数据库,何时分析?

时间:2015-06-22 18:27:47

标签: postgresql vacuum

我只是想检查一下我对这两件事的理解是否正确。如果相关,我使用的是Postgres 9.4。

我认为在寻求从文件系统中回收空间时,应该真空数据库,例如删除表或大量行后定期。

我认为应该在创建新索引后分析数据库,或者(在表中)添加或删除大量行后(定期),以便查询规划器可以进行良好的调用。

这听起来不错吗?

2 个答案:

答案 0 :(得分:6)

vacuum analyze; 

收集统计信息,应该尽可能多地运行数据(尤其是批量插入)。它不会锁定对象独占。它加载系统,但值得。它不会减小表的大小,但会分散标记释放的位置(例如删​​除的行)以供重用。

vacuum full;

通过创建表的副本并切换到表来重新组织表。此真空需要额外的空间来运行,但回收对象的所有未使用的空间。因此,它需要对对象进行独占锁定(其他会话应等待它完成)。应该在数据更改(删除,更新)以及何时可以让其他人等待时运行。

两者在动态数据库

上非常important

答案 1 :(得分:1)

正确。

我想补充一点,您可以将default_statistics_target文件中postgresql.conf参数的值(默认为100)更改为更高的数字,之后,您应该重新启动服务器并运行{{ 1}}以获得更准确的统计数据。