VACUUM FULL 回收空间所用的时间

Has*_*aig 2 postgresql maintenance vacuum postgresql-9.3

在上一篇博文中获得一些有见地的指导后,我将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 precision, timestamp, char bool)

4) links_user_sessions: ~2M 行、7 列、4 个索引(类型:int、text、timestamp、inet)

这是我第一次尝试回收磁盘空间。它是本地社交网站的繁忙服务器。没有时间实际上是“停机时间”。但最不忙的是大约凌晨 4:00,因此我将使用该窗口。

就经验而言,你们能否对我指出的 4 个表的 VACUUM FULL 需要多长时间形成任何意见?我想在网站上发布一条“维护中直到 xx:xx:xx”的消息。我知道没有人可以确定,但这是否足以让您形成大致的意见?

其次,为了让我们在同一页面上,我将在 psql 上运行的命令很简单VACUUM (FULL, VERBOSE, ANALYZE) link_publicreply;(等等),对吗?不想搞砸了。

Erw*_*ter 5

它是本地社交网站的繁忙服务器。没有时间实际上是“停机时间”。

所以VACUUM FULL这将是一个问题,因为它在它处理的每个表上都需要一个排他锁。考虑使用社区工具pg_repack,它可以在没有排他锁的情况下实现相同的目标。

有关的:

这些都不会影响备份的大小,因为那些不包括死行开始。