i am seeing some odd behavior and wonder if anyone can help me explain it
and fix it...
i've written a java task that runs in a thread and monitors disk space on
the partition where i have my $PGDATA. if the space available drops below a
certain level, i remove some old records ... and vacuum.
the odd thing is that running via jdbc the space seems to not be recovered.
example - if i start with 100,000 records of approximately 1K size and i
remove 50,000, using 'df' in another shell i see no space recovery. from
another shell, using psql, i run vacuum and again i see no gains.
the really odd thing is that if i do this whole scenario in psql - create
100,000, delete the oldest 50,000, and vacuum - i *do* see the space
recovered.
even better (or worse), if i do the whole test in java, verify that little
or no space is recovered, then run psql and delete a single records and
vacuum, bam(!) i get a boatload of space back.
note that in the java task i explicitly set auto-commit to true and i run
queries from psql that show results that reflect the deletions, so i don't
see this as a transaction problem. also, if i shut down postgresql i see the
correct (reduced) record count but still no space recovery. i can restart
it, run psql, and vacuum, but still no space recovery... but if i then
delete a record and vacuum again, i get space, lots of space (i.e.
megabytes).
any ideas anyone? thanks
john
---
john guthrie
psynapse technologies