Nick Urbanik wrote:

I am running a full vacuum on a database.  It's taking longer than I
hoped.  In particular, the vacuum still hasn't reached the table that
will benefit most from the vacuum.

Can I move the existing table to a backup, make a copy of the table
back to its original name, restart the application, and run the vacuum
on the backup?  Or can I reclaim the disk space by dropping the
original after making a copy?

If I can, without losing data, what is the best way to do that?
I am reaching the end of the period when this database application can
be disabled.

If you're waiting on vacuum to get around to the one table, you can run VACUUM FULL <tablename> instead.

Personally I've found that dropping indices (including the PK), then vacuum full, then recreating indices can be an awful lot faster than just leaving vacuum full to its own devices.

Yes you ought to be able to reclaim disk space by the copy/drop original/rename procedure, but that gets hard to manage if you have triggers or foreign keys on the table in question. You might want to use CREATE TABLE table_copy (LIKE orig_table) to preserve column defaults if you go down that path.

HTH,
Geoff

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Reply via email to