From: | "Florian G(dot) Pflug" <fgp(at)phlo(dot)org> |
---|---|
To: | Heikki Linnakangas <heikki(at)enterprisedb(dot)com> |
Cc: | pgsql-hackers(at)postgresql(dot)org, Simon Riggs <simon(at)2ndquadrant(dot)com>, Jacky Leng <lengjianquan(at)163(dot)com> |
Subject: | Re: Why copy_relation_data only use wal when WALarchiving is enabled |
Date: | 2007-10-17 13:06:08 |
Message-ID: | 471608C0.4040408@phlo.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers pgsql-patches |
Heikki Linnakangas wrote:
> I wrote:
>> Unfortunately I don't see any easy way to fix it. One approach would be
>> to avoid reusing the relfilenodes until next checkpoint, but I don't see
>> any nice place to keep track of OIDs that have been dropped since last
>> checkpoint.
>
> Ok, here's one idea:
>
> Instead of deleting the file immediately on commit of DROP TABLE, the
> file is truncated to release the space, but not unlink()ed, to avoid
> reusing that relfilenode. The truncated file can be deleted after next
> checkpoint.
>
> Now, how does checkpoint know what to delete? We can use the fsync
> request mechanism for that. When a file is truncated, a new kind of
> fsync request, a "deletion request", is sent to the bgwriter, which
> collects all such requests to a list. Before checkpoint calculates new
> RedoRecPtr, the list is swapped with an empty one, and after writing the
> new checkpoint record, all the files that were in the list are deleted.
>
> We would leak empty files on crashes, but we leak files on crashes
> anyway, so that shouldn't be an issue. This scheme wouldn't require
> catalog changes, so it would be suitable for backpatching.
>
> Any better ideas?
Couldn't we fix this by forcing a checkpoint before we commit the transaction
that created the new pg_class entry for the clustered table? Or rather, more
generally, before committing a transaction that created a new non-temporary
relfilenode but didn't WAL-log any subsequent inserts.
Thats of course a rather sledgehammer-like approach to this problem - but at
least for the backbranched the fix would be less intrusive...
regards, Florian Pflug
From | Date | Subject | |
---|---|---|---|
Next Message | Rodrigo Hjort | 2007-10-17 13:07:13 | DBLink's default user: postgres |
Previous Message | Heikki Linnakangas | 2007-10-17 12:40:03 | Re: Why copy_relation_data only use wal when WALarchiving is enabled |
From | Date | Subject | |
---|---|---|---|
Next Message | Simon Riggs | 2007-10-17 13:42:45 | Re: Why copy_relation_data only use wal when WALarchiving is enabled |
Previous Message | Heikki Linnakangas | 2007-10-17 12:40:03 | Re: Why copy_relation_data only use wal when WALarchiving is enabled |