vacuum & free space map

Started by Luca Ferrariover 6 years ago3 messagesgeneral
Jump to latest
#1Luca Ferrari
fluca1978@gmail.com

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Luca Ferrari (#1)
Re: vacuum & free space map

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

#3Luca Ferrari
fluca1978@gmail.com
In reply to: Tom Lane (#2)
Re: vacuum & free space map

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