Autovacuum not vacuuming pg_largeobject
I'm a bit concerned about the autovacuum daemon.
Today I runned a vacuum full during a normal maintainance task and I
noticed that the size of pg_largeobject
decreased from 14GB to 4GB...
Every night we have a procedure that deletes large object no more
referenced using the vacuumlo program.
This program issues delete commands to the pg_largeobject table in order
to erase the rows of the los no more referenced.
Autovacuum is up and running... but now i'm thinking it doesn't examine
system tables such as pg_largeobject...
Am I wrong?
Thank you,
Denis
Denis Gasparin <denis@edistar.com> writes:
I'm a bit concerned about the autovacuum daemon.
Today I runned a vacuum full during a normal maintainance task and I
noticed that the size of pg_largeobject
decreased from 14GB to 4GB...
Every night we have a procedure that deletes large object no more
referenced using the vacuumlo program.
This program issues delete commands to the pg_largeobject table in order
to erase the rows of the los no more referenced.
Autovacuum is up and running... but now i'm thinking it doesn't examine
system tables such as pg_largeobject...
Am I wrong?
Yeah, you're wrong. The difference is that plain vacuum does not try
very hard to reduce the length of a table file --- it just frees up
space within the file for reuse. vacuum full will actually move things
from the end of the file to free space nearer the head of the file,
so that it can shorten the file.
What I suspect the above observations really prove is you don't have
max_fsm_pages set high enough, and so pg_largeobject was bloating because
the free space was being forgotten instead of reused.
regards, tom lane
Yeah, you're wrong. The difference is that plain vacuum does not try
very hard to reduce the length of a table file --- it just frees up
space within the file for reuse. vacuum full will actually move things
from the end of the file to free space nearer the head of the file,
so that it can shorten the file.What I suspect the above observations really prove is you don't have
max_fsm_pages set high enough, and so pg_largeobject was bloating because
the free space was being forgotten instead of reused.
I tried to issue the vacuum command on one of my database and i got the
following log messages:
LOG: max_fsm_relations(1000) equals the number of relations checked
HINT: You have at least 1000 relations. Consider increasing the
configuration parameter
I suspect I must increase max_fsm_relations.
The value of max_fsm_pages is 20000 (the default value).
I suspect I must change this to a higher value... but how high should
this value be?
Thank you in advance,
Denis
Denis Gasparin wrote:
Yeah, you're wrong. The difference is that plain vacuum does not try
very hard to reduce the length of a table file --- it just frees up
space within the file for reuse. vacuum full will actually move things
from the end of the file to free space nearer the head of the file,
so that it can shorten the file.What I suspect the above observations really prove is you don't have
max_fsm_pages set high enough, and so pg_largeobject was bloating because
the free space was being forgotten instead of reused.I tried to issue the vacuum command on one of my database and i got the
following log messages:LOG: max_fsm_relations(1000) equals the number of relations checked
HINT: You have at least 1000 relations. Consider increasing the
configuration parameterI suspect I must increase max_fsm_relations.
The value of max_fsm_pages is 20000 (the default value).
I suspect I must change this to a higher value... but how high should
this value be?
First increase max_fsm_relations to more than the number of tables,etc
in your system. Then, after it's running a while, do the same vacuum
command and see if it gives you a hint to increase that parameter too.