Re: Vacuum very big table - how the full vacuum works in background/internally?

From: Luca Ferrari <fluca1978(at)gmail(dot)com>
To: Durumdara <durumdara(at)gmail(dot)com>
Cc: Postgres General <pgsql-general(at)postgresql(dot)org>
Subject: Re: Vacuum very big table - how the full vacuum works in background/internally?
Date: 2019-10-17 15:42:54
Message-ID: CAKoxK+4wQD+nYBrfseADm4pGKAShcOCODhe_2UgYHQg1AaohHQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Thu, Oct 17, 2019 at 5:10 PM Durumdara <durumdara(at)gmail(dot)com> wrote:
> Please help me, how the PGSQL full vacuum works internally? (1., 2. case, or something else)
>

As far as I know a VACUUM FULL will rewrite the whole table without
inserting (and therefore deleting later) not visible tuples. I would
be quite surprised of it duplicating the table and removing after the
tuples.
Surely it is a very invasive command that locks the table and requires I/O.

> How we (and the clients) prepare to this operation?
> We must know it to avoid disk out problems, and too much off-time.

The best guess is that you are going to need almost the double of the
table size. Since you said that autovacuum is preventing the table to
grow, it could mean all the reclaimed space has been consumed by other
tuples, so I'm not sure vacuum full can provide you space.
Have you looked at pg_stat_user_tables to see the dead tuples fraction?

Luca

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Reid Thompson 2019-10-17 16:18:42 Re: Can you please tell us how set this prefetch attribute in following lines.
Previous Message Justin Pryzby 2019-10-17 15:30:06 Re: v12 and pg_restore -f-