From: | Csaba Nagy <nagy(at)ecircle-ag(dot)com> |
---|---|
To: | Heikki Linnakangas <heikki(at)enterprisedb(dot)com> |
Cc: | postgres hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: CLUSTER and MVCC |
Date: | 2007-03-09 13:13:53 |
Message-ID: | 1173446033.9058.80.camel@coppola.muc.ecircle.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> Hmm. You could use something along these lines instead:
>
> 0. LOCK TABLE queue_table
> 1. SELECT * INTO queue_table_new FROM queue_table
> 2. DROP TABLE queue_table
> 3. ALTER TABLE queue_table_new RENAME queue_table
>
> After all, it's not that you care about the clustering of the table, you
> just want to remove old tuples.
... and then restart the app so all my pooled connections drop their
cached plans ;-)
Seriously, that won't work. If a session tries to insert a new row after
I lock the table to clean it up, I still want it to be able to insert
after the cleanup is finished... if I drop the table it tries to insert
to, it will fail.
> As a long term solution, it would be nice if we had more fine-grained
> bookkeeping of snapshots that are in use in the system. In your case,
> there's a lot of tuples that are not visible to pg_dump because xmin is
> too new, and also not visible to any other transaction because xmax is
> too old. If we had a way to recognize situations like that, and vacuum
> those tuples, much of the problem with long-running transactions would
> go away.
In the general case that won't work either in a strict MVCC sense... if
you have an old transaction, you should never clean up a dead tuple
which could be still visible to it.
> > Wouldn't be possible to do it like Simon (IIRC) suggested, and add a
> > parameter to enable/disable the current behavior, and use the MVCC
> > behavior as default ?
>
> I guess we could, but I don't see why should encourage using CLUSTER for
> that. A more aggressive, MVCC-breaking version of VACUUM would make more
> sense to me, but I don't like the idea of adding "break-MVCC" flags to
> any commands.
Well, if there would be any other way to avoid the table bloat I would
agree.
Cheers,
Csaba.
From | Date | Subject | |
---|---|---|---|
Next Message | Csaba Nagy | 2007-03-09 13:15:18 | Re: CLUSTER and MVCC |
Previous Message | Zeugswetter Andreas ADI SD | 2007-03-09 13:10:07 | Re: CLUSTER and MVCC |