Postgresql

VACUUM FULL 回收空間所用的時間

  • September 28, 2017

在此處的上一篇文章中獲得一些有見地的指導後,我將VACUUM FULL在 4 個 PostgreSQL 9.3.10 表上執行。表大小為:

  1. links_publicreply: ~30M 行,9 列,3 個索引(類型:int、timestamp、char、bool)

  2. links_reply: ~25M 行,8 列,6 個索引(類型:int、text、timestamp、char)

  3. links_link: ~8M 行,14 列,3 個索引(類型:int、text、dbl 精度、timestamp、char bool)

  4. links_user_sessions: ~2M 行,7 列,4 個索引(類型:int、text、timestamp、inet)

這是我第一次嘗試回收磁碟空間。這是本地社交網站的繁忙伺服器。沒有時間實際上是“停機時間”。但最不忙的是~4:00 AM,所以我將使用視窗。

根據經驗,你們對我指出的 4 張桌子需要多長時間 VACUUM FULL 有什麼看法嗎?我想在網站上發布“維護中,直到 xx:xx:xx”消息。我知道沒有人可以確定,但是這種確定性足以讓你形成一個大致的意見嗎?

其次,為了讓我們在同一頁面上,我在 psql 上執行的命令很簡單VACUUM (FULL, VERBOSE, ANALYZE) link_publicreply;(等等),對嗎?不想搞砸了。

這是本地社交網站的繁忙伺服器。沒有時間實際上是“停機時間”。

VACUUM FULL將是一個問題,因為它在它處理的每個表上都需要一個排他鎖。考慮一下社區工具pg_repack,它可以在沒有排他鎖的情況下實現相同的效果。

有關的:

這些都不會影響備份的大小,因為它們一開始就不包括死行。

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