Re: [pgsql-advocacy] Unlogged vs. In-Memory

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Thom Brown <thom(at)linux(dot)com>
Cc: Josh Berkus <josh(at)agliodbs(dot)com>, Simon Riggs <simon(at)2ndquadrant(dot)com>, Magnus Hagander <magnus(at)hagander(dot)net>, Rob Wultsch <wultsch(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: [pgsql-advocacy] Unlogged vs. In-Memory
Date: 2011-09-23 19:04:26
Message-ID: CA+TgmobyojAgXS=LEwLLrpMOpg5iRpR7bgm1oA_L+io0-_Bt0Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-advocacy pgsql-hackers

On Fri, Sep 23, 2011 at 11:36 AM, Thom Brown <thom(at)linux(dot)com> wrote:
> On 23 September 2011 15:56, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
>> On Fri, Sep 23, 2011 at 10:54 AM, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
>>> CREATE TABLESPACE now_you_see_me_now_you_dont LOCATION
>>> '/mnt/highly_reliable_san' VOLATILE LOCATION '/mnt/ramdisk';
>>>
>>> All forks of temporary relations, and all non-_init forks of
>>> non-temporary relations, could be stored in the VOLATILE LOCATION,
>>> while everything else could be stored in the regular LOCATION.
>>>
>>> Hmm... actually, I kind of like that.  Thoughts?
>>
>> Gah.  I mean, all forks of temporary relations, and all non-_init
>> forks of *unlogged* relations, could be stored in the VOLATILE
>> LOCATION.  Permanent tables would have all forks in the regular
>> LOCATION, along with _init forks of unlogged tables.
>>
>> Of course, that would have the problem that relpathbackend() would
>> need to know the relpersistence value in order to compute the
>> pathname, which I think is going to be ugly, come to think of it.
>
> I doubt I understand the whole _init forks thing correctly,

Basically, for every unlogged table, you get an empty _init fork, and
for every index of an unlogged table, you get an _init fork
initialized to an empty index. The _init forks are copied over the
main forks by the startup process before entering normal running.

> but can't
> the main tablespace provide sanctuary to such volatile supporting meta
> data (pg_version, _init and whatever else you're worried about) except
> the actual relation (and its vm/fsm)?  Anything you can't afford to
> lose you get the main tablespace to look after.  And instead of having
> a dir linked to the location in pg_tblspc, an actual dir could exist,
> containing items directly linked to items in the volatile location.
>
> Hmm... it doesn't sound quite right to me either.

Well, we could certainly Decree From On High that the _init forks are
all going to be stored under $PGDATA rather than in the tablespace
directories. That would make things simple. Of course, it also means
that if you want the _init forks stored somewhere, you are out of
luck. Now maybe that is an unlikely scenario. Off the top of my
head, the only case I can think of would be if the storage space or
inode consumption requirements were problematic - and even then you
could stick a symlink in there someplace to make it work, if you're
the sort of person who knows how to do that. So maybe it's OK. But
it makes me a little uneasy. When people ask to put stuff in a
tablespace, I tend to think they want it to show up in that
tablespace.

Hmm, hmm...

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Responses

Browse pgsql-advocacy by date

  From Date Subject
Next Message Kevin Grittner 2011-09-23 20:45:09 Re: Wikipedia's Isolation page
Previous Message Greg Smith 2011-09-23 18:58:23 Re: Wikipedia's Isolation page

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2011-09-23 19:10:01 Re: Hot Backup with rsync fails at pg_clog if under load
Previous Message Merlin Moncure 2011-09-23 18:17:55 Re: "stored procedures"