vacuums and ctid

Started by Gaetano Mendolaover 21 years ago2 messages
#1Gaetano Mendola
mendola@bigfoot.com

Hi all,
looking at how ctid is used is clear to me:

insert line (A) in a table; ==> ctid = (0, 1);
rollback an update for the line (A);
insert a line (B) in the table; ==> ctid = (0, 3);
vacuum full;
insert a line (C) in the table; ==> ctid = (0, 2);

I was expecting this for a normal vacuum not for a vacuum full.

for a vacuum full I was expecting:

insert line (A) in a table; ==> ctid = (0, 1);
rollback an update for the line (A);
insert a line (B) in the table; ==> ctid = (0, 3);
vacuum full; ( line B moved in ctid ( 0, 2) )
insert a line (C) in the table; ==> ctid = (0, 3);

could this due the fact that moving that tuple will not
save any storage space ?

If not, am I missing something ?

Regards
Gaetano Mendola

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Gaetano Mendola (#1)
Re: vacuums and ctid

Gaetano Mendola <mendola@bigfoot.com> writes:

could this due the fact that moving that tuple will not
save any storage space ?

Yup. VACUUM FULL is not interested in collapsing out unused CTID slots.

regards, tom lane