Thread: vacuum & free space map

vacuum & free space map

From
Luca Ferrari
Date:
Hi,
I'm not understanding why a vacuum full clears a FSM information while
a normal vacuum does not. On a table with fillfactor = 50 I've got:

testdb=> vacuum full respi.pull_status;
VACUUM
testdb=> SELECT * FROM pg_freespace( 'respi.pull_status', 0 );
 pg_freespace
--------------
            0
(1 row)

testdb=> vacuum respi.pull_status;
VACUUM
testdb=> SELECT * FROM pg_freespace( 'respi.pull_status', 0 );
 pg_freespace
--------------
         4096
(1 row)

So why is vacuum full not considering the fillfactor and clearing the
FSM? Or am I misunderstanding the results from pg_freespace?
This is on postgresql 11.4.

Thanks,
Luca



Re: vacuum & free space map

From
Tom Lane
Date:
Luca Ferrari <fluca1978@gmail.com> writes:
> I'm not understanding why a vacuum full clears a FSM information while
> a normal vacuum does not. On a table with fillfactor = 50 I've got:

VAC FULL builds a new physical table, which has no FSM to start with.
Possibly, when fillfactor < 100, that's something that should be
created; the decision not to bother is probably older than the
fillfactor knob.

            regards, tom lane



Re: vacuum & free space map

From
Luca Ferrari
Date:
On Tue, Aug 6, 2019 at 3:50 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
> VAC FULL builds a new physical table, which has no FSM to start with.

Thanks, that was I was suspecting.

Luca