我正在运行一个PostgreSQL数据库,它有几个存储日志信息的表。 此信息仅用于报告目的,如果超过30天,将被转储到文件并从数据库中删除。
可以删除数百万行,并且每次删除后我们都会运行一个REINDEX。
这是足够的,还是我们也应该运行VACUUM或VACUUM ANALYZE? 或者REINDEX不是必需的,我们应该运行VACUUM或VACUUM ANALYZE?
我们正在使用PostgreSQL 8.2.3,我相信它不允许自动清空。
您应该执行VACUUM ANALYZE,因为VACUUM将允许重复使用已删除数据所使用的空间并防止事务环绕,并且ANALYZE将更新规划器统计信息,这将导致更好的报告查询计划。
REINDEX在理论上是不需要的,但是您可能会发现,由于索引是连续的,因此会导致更好的性能。
8.2的相关文档页面在这里(常规重新索引)和在这里(常规吸尘) 。