【问题标题】:Vacuum PostgreSQL DB from PHP从 PHP 清理 PostgreSQL 数据库
【发布时间】:2009-09-14 16:05:47
【问题描述】:

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

我试过这个:

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

如何判断这是否有效?

【问题讨论】:

    标签: php postgresql vacuum


    【解决方案1】:

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

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

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

    【讨论】:

    • 超时不是问题,它是一个PHP脚本,由cron和wget调用并执行其他几个维护任务。
    • 如果你可以访问cron,为什么不直接调用vacuumdb?
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2011-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多