Re: 7.4?

scott.marlowe <scott.marlowe@ihs.com>

From: "scott.marlowe" <scott.marlowe@ihs.com>
To: Shridhar Daithankar <shridhar_daithankar@persistent.co.in>
Cc: Postgresql General <pgsql-general@postgresql.org>
Date: 2003-02-27T16:22:57Z
Lists: pgsql-general
On Thu, 27 Feb 2003, Shridhar Daithankar wrote:

> On 24 Feb 2003 at 15:53, Ericson Smith wrote:
> > Currently our database is at about 15gigs. Over the period of a month,
> > it grows to about 25gigs (10Gb wasted space). Every month we have a
> > cleanup routine which involves copying the most actively updated tables
> > to text, and importing the data again. We vacuum every night and analyze
> > 4 times per day, but we're loath to do a VACUUM FULL because of the
> > table locking issues (locking some of the tables would break the
> > operation of some of our 24/7 systems), hence we prefer to stop the db
> > about once per month, eat the downtime as scheduled (about 1.5 hours),
> > and get back to business for the next 30 days again.
> 
> We ahd a discussion on this few days back and the solution might work as well 
> for you(apart from suggestions you have already received).
> 
> Instead of vacuum full on a table, backup the table to a dump file, drop it and 
> recreate it. It takes more efforts than simple vacuum full but may run much 
> faster if you have large amount of space to recover.

Another option is to do something like:

begin;
select * into temp_table from bigtable;
delete from big_table;
insert into big_table (select * from temp_table);
commit;

This way your table is online while you're doing this, and can still be 
selected by various clients without interruption.