JDBC delete not recovering space?

From: "John Guthrie" <jguthrie(at)psynapsetech(dot)net>
To: <pgsql-jdbc(at)postgresql(dot)org>
Subject: JDBC delete not recovering space?
Date: 2003-04-23 15:45:21
Message-ID: 01da01c309af$5bf9f320$3dc810ac@corphq.psynapsetech.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

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

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Jeroen Habets 2003-04-23 15:50:59 Re: JDBC delete not recovering space?
Previous Message Roberto Bouza 2003-04-23 15:39:16 An I/O error has occured while flushing the output