Re: [Bizgres-general] WAL bypass for INSERT, UPDATE and - Mailing list pgsql-hackers

From Rick Gigger
Subject Re: [Bizgres-general] WAL bypass for INSERT, UPDATE and
Date
Msg-id DF68221A-EE93-4F19-8872-9C2A3BF3F3A3@alpinenetworking.com
Whole thread Raw
In response to Re: [Bizgres-general] WAL bypass for INSERT, UPDATE and  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-hackers
> Rick Gigger wrote:
>> I was thinking the exact same thing.  Except  the "and just fsync()
>> dirty pages on commit" part.  Wouldn't that actually make the
>> situation worse?  I thought the whole point of WAL was that it was
>> more efficient to fsync all of the changes in one sequential write in
>> one file rather than fsyncing all of the separate dirty pages.
>
> Uh, supposedly the WAL traffic is not as efficient as fsyncing whole
> pages if you are doing lots of full pages.

So then you would want to use this particular feature only when  
updating/inserting large amounts of info at a time then?

For instance if you have a table with rows that are 12 bytes wide  
using this feature would be very bad because it would fsync out a  
whole bunch of extra data just to get those 12 bytes written.  But on  
a table that wrote out several k of data at a time it would help  
because it would be filling up entire pages and not doing any  
wasteful fsyncing?

I guess that probably would help session tables because it would  
avoid writing the data twice.

In the case of session tables though I for one don't care if that  
data is recoverable or not.  If my database just crashed I've  
probably got bigger problems then just dropped sessions.  Would it be  
possible to a) Not WAL log that table, b) not fsync that table at  
all.  Then if that table is in an inconsistent state just recreate  
the table?

I'm guessing that is getting a little too crazy but I have been  
thinking about setting up a separate postgres instance listening on a  
different port with fsync off as a possible way to avoid the fsync  
overhead for the sessions.


> ---------------------------------------------------------------------- 
> -----
>
>
>>
>> On Feb 6, 2006, at 7:24 PM, Christopher Kings-Lynne wrote:
>>
>>>>     * Allow WAL logging to be turned off for a table, but the table
>>>>       might be dropped or truncated during crash recovery [walcontrol]
>>>>     
>>>>       Allow tables to bypass WAL writes and just fsync() dirty  
>>>> pages on
>>>>       commit.  This should be implemented using ALTER TABLE, e.g.  
>>>> ALTER
>>>>       TABLE PERSISTENCE [ DROP | TRUNCATE | DEFAULT ].  Tables using
>>>>       non-default logging should not use referential integrity with
>>>>       default-logging tables.  A table without dirty buffers during a
>>>>       crash could perhaps avoid the drop/truncate.
>>>
>>> This would be such a sweet feature for website session tables...
>>>
>>> Chris
>>>
>>>
>>> ---------------------------(end of
>>> broadcast)---------------------------
>>> TIP 2: Don't 'kill -9' the postmaster
>>>
>>
>>
>> ---------------------------(end of  
>> broadcast)---------------------------
>> TIP 4: Have you searched our list archives?
>>
>>                http://archives.postgresql.org
>>
>
> -- 
>   Bruce Momjian                        |  http://candle.pha.pa.us
>   pgman@candle.pha.pa.us               |  (610) 359-1001
>   +  If your life is a hard drive,     |  13 Roberts Road
>   +  Christ can be your backup.        |  Newtown Square,  
> Pennsylvania 19073
>
> ---------------------------(end of  
> broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings
>



pgsql-hackers by date:

Previous
From: "Pavel Stehule"
Date:
Subject: Re: slow information schema with thausand users, seq.scan pg_authid
Next
From: Salman Razzaq
Date:
Subject: Re: Need Help In arrays