2009-09-14 78 views

回答

3

在運行真空查詢之前和之後運行此查詢。如果真空後的「年齡」比之前少,那麼真空已經成功運行。

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

第一個問題:你爲什麼這樣做真空FULL?這沒有意義。它應該幾乎不會被調用。

第二:從php運行真空(可能是網頁)可能會有問題。真空可以很容易地超過3分鐘,這是(如果我記得正確)Web請求的標準超時。

最好的解決方案是使用autovacuum。如果您不能使用autovacuum - 使用cron安排vacuumdb調用。

+0

刪除'FULL',您說的沒錯。 – Liam 2009-09-15 09:05:54

+0

超時並不是問題,它是一個由cron和wget調用的PHP腳本,並執行其他幾項維護任務。 – Liam 2009-09-15 09:08:57

+1

如果您有權訪問cron,爲什麼不直接直接調用vacuumdb? – 2009-09-15 11:15:16

1

假設您的vacuum運行超過幾秒鐘,您可以在postgres客戶端運行「SELECT * FROM pg_stat_activity」以獲取當前運行的查詢列表。你的VACUUM查詢應該顯示在那裏。