VACUUM technical question
Hello,
I have a technical question about VACUUM
I assume all table data is kept in a single file
and each index has its single file also.
Also I assume that VACUUM cleans the file of 'dead pages' that consist
of dead rows only.
How does it manage to reduce file size without any locks ?
Or which locks are applied ?
--
Best regards,
Ilia mailto:algolist@manual.ru
Ilia Kantor <algolist@manual.ru> writes:
How does it manage to reduce file size without any locks ?
It doesn't. The file can only be shortened while holding
AccessExclusiveLock (otherwise we could cause serious problems for
concurrent seqscans). VACUUM FULL has such a lock anyway,
plain VACUUM only tries to truncate if it can acquire such
a lock for a short time at the end of the VACUUM run.
regards, tom lane