从PHP真空PostgreSQL DB

时间:2009-09-14 16:05:47

标签: php postgresql vacuum

我想从PHP中清空PostgreSQL数据库。

我试过这个:

pg_query($conn,"vacuum analyse;");

我怎么知道这是否有效?

4 个答案:

答案 0 :(得分:4)

第一个问题:为什么你做VACUUM FULL ?这没有意义。它实际上从未被称为。

第二:从php(可能是网页)运行真空可能会有问题。真空可以轻松占用3分钟,这是(如果我没记错的话)网络请求的标准超时。

最好的解决方案是使用autovacuum。如果你不能使用autovacuum - 使用cron安排vacuumdb调用。

答案 1 :(得分:3)

在运行真空查询之前和之后运行此查询。如果真空后'年龄'比以前少,那么真空运行成功。

SELECT age(datfrozenxid) as age FROM pg_database where datname='your_db';

答案 2 :(得分:1)

我相信它不会返回错误,它可能正常工作。以下是关于真空的文档。

http://www.postgresql.org/docs/current/interactive/sql-vacuum.html

答案 3 :(得分:1)

假设您的真空运行超过几秒钟,您可以在postgres客户端中运行“SELECT * FROM pg_stat_activity”以获取当前正在运行的查询的列表。您的VACUUM查询应该显示在那里。