我想從PHP抽取PostgreSQL數據庫。來自PHP的真空PostgreSQL數據庫
我已經試過這樣:
pg_query($conn,"vacuum analyse;");
我怎樣才能知道這是否正常工作?
我想從PHP抽取PostgreSQL數據庫。來自PHP的真空PostgreSQL數據庫
我已經試過這樣:
pg_query($conn,"vacuum analyse;");
我怎樣才能知道這是否正常工作?
在運行真空查詢之前和之後運行此查詢。如果真空後的「年齡」比之前少,那麼真空已經成功運行。
SELECT age(datfrozenxid) as age FROM pg_database where datname='your_db';
我相信它不會返回錯誤,它可能正在工作。這裏是關於真空的文檔。
http://www.postgresql.org/docs/current/interactive/sql-vacuum.html
第一個問題:你爲什麼這樣做真空FULL?這沒有意義。它應該幾乎不會被調用。
第二:從php運行真空(可能是網頁)可能會有問題。真空可以很容易地超過3分鐘,這是(如果我記得正確)Web請求的標準超時。
最好的解決方案是使用autovacuum。如果您不能使用autovacuum - 使用cron安排vacuumdb調用。
假設您的vacuum運行超過幾秒鐘,您可以在postgres客戶端運行「SELECT * FROM pg_stat_activity
」以獲取當前運行的查詢列表。你的VACUUM查詢應該顯示在那裏。
刪除'FULL',您說的沒錯。 – Liam 2009-09-15 09:05:54
超時並不是問題,它是一個由cron和wget調用的PHP腳本,並執行其他幾項維護任務。 – Liam 2009-09-15 09:08:57
如果您有權訪問cron,爲什麼不直接直接調用vacuumdb? – 2009-09-15 11:15:16