1

我想从 PHP 中清理一个 PostgreSQL 数据库。

我试过这个:

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

我怎么知道这是否有效?

4

4 回答 4

4

第一个问题:你为什么要做 VACUUM FULL?这没有意义。它实际上应该永远不会被调用。

第二:从 php(可能是网页)运行真空可能会出现问题。真空很容易花费 3 分钟以上,这是(如果我没记错的话)Web 请求的标准超时。

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

于 2009-09-14T16:31:50.013 回答
3

在运行真空查询之前和之后运行此查询。如果真空之后的“年龄”比之前少,那么真空已经成功运行。

SELECT age(datfrozenxid) as age FROM pg_database where datname='your_db';
于 2009-09-15T09:46:01.783 回答
1

我相信它不会返回错误,它可能正在工作。这是有关真空的文档。

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

于 2009-09-14T16:11:11.343 回答
1

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

于 2009-09-14T17:55:40.113 回答