Performance

Postgresql:autovacuum 會影響查詢性能嗎?它是否應用了影響其他查詢性能的鎖?

  • June 11, 2021

Postgres 推薦使用 autovacuum 來移除死元組。但是執行 autovacuum 是否最終會使對同一張表的其他查詢變慢?它是否添加了影響性能的鎖(行或表級別)?CPU 是否有很大的負載或是否消耗大量記憶體。

這將幫助我們決定是否應該為我們的其中一個具有大量寫入和刪除的表打開 autovacuum,或者我們是否應該在非高峰時間定期執行手動清理。

它的記憶體使用受autovacuum_work_memor限制maintenance_work_mem。它的 IO 消耗受到autovacuum_vacuum_cost_delay和朋友的限制,並且這些的預設值導致相當低的 IO 需求。CPU 使用率並沒有直接受到限制,而是受到 IO 消耗節流閥的間接限制,使用預設設置通常會接近可以忽略不計。

Autovacuum 確實對錶進行了鎖定,但它是一個弱鎖,不會干擾正常操作(SELECT、UPDATE、DELETE),但會干擾添加索引或截斷表等操作。 Autovacuum 通常會在檢測到它正在阻塞某些東西時自行取消並放棄鎖定,但如果它處於“防止環繞”模式,它就不會這樣做。

Autovacuum 預設開啟。你不應該把它關掉。在非高峰時段執行手動真空吸塵器很好,但讓自動真空吸塵器作為備份裝置,以捕捉手動真空吸塵器遺漏的任何東西。

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