Postgresql

真空與自動真空

  • March 12, 2014

我正在嘗試為以下幾個查詢找到答案,這將有助於我微調我的 postgres 數據庫。我做了一些Google搜尋,但找不到答案。

  1. Out of Vacuum 或 Auto Vacuum 哪個是資源密集型操作?

  2. 有沒有辦法僅在更新活動異常繁重時執行自動清理?

3)我如何根據設置找出我的自動真空下次何時開始,基於門檻值。

1)如果你不把自己的時間算作資源,那麼你應該總是能夠手工製作一個比 autovacuum 使用的總資源更少的真空計劃。如果你計算自己的時間,這幾乎肯定是不值得的。

2)除了手動或算法打開或關閉它之外,沒有。這樣做也沒有意義。僅看到非常穩定的可預測負載且沒有異常峰值的數據庫仍然需要清理。但是,如果您確實花費大量時間提出高度優化的手工真空計劃,那麼 autovacuum 將永遠不會進行任何真空吸塵,除非您的自定義計劃中沒有預料到的異常活動;所以從這個意義上說,你想要的就是這種情況。

  1. 目前尚不清楚您的意思是autovacuum worker 何時在給定數據庫中啟動,還是任何給定表何時開始被清理。第一個由 autovacuum_naptime 決定,除非 autovacuum_max_workers 成為限制因素。第二個取決於表何時超過門檻值,粒度為 autovacuum_naptime,除非 autovacuum_max_workers 成為限制因素。您可以多準確地預測這一點取決於該表上的活動有多穩定,以及真空任務通常是超載還是大部分空閒。

引用自:https://dba.stackexchange.com/questions/48022