Search Postgresql Archives

Re: Possible causes for database corruption and solutions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Is changing the OS/X wal_sync_method default something we should
consider?

---------------------------------------------------------------------------

Greg Smith wrote:
> Michael Clark wrote:
> > The solution to the problem seemed to be to change the value for the 
> > wal_sync_method setting to fsync_writethrough from the default of fsync.
> 
> I was surprised recently to discover the default wasn't 
> fsync_writethrough on that platform, because it probably should be.  
> There is no other safe mode to run PostgreSQL in OS X with.  If you 
> don't invoke the write-through cache flushing code, you can expect 
> databases to get regularly corrupted if people do things like lose power 
> in the middle of writing something, exactly as you're seeing.
> 
> > Secondly, I ask about an alternative solution to the corruption 
> > problem because with preliminary testing we have seen a significant 
> > degradation in performance.  So far the two operations we have noted 
> > are database creation and database restores.
> 
> For the restore case, you might get a good sized boost in performance 
> without introducing a risk of corruption by turning off the 
> synchronous_commit parameter.  That will put you in a position where you 
> can have a committed transaction not actually be on disk if there's a 
> crash or sudden power outage, but you won't get an actual corruption in 
> that case.  So fsync_writethough plus synchronous_commit=off should be 
> no less safe than what you've got now, but probably not as fast as what 
> you're used to.  As already pointed out, there is a trade-off here you 
> can't bargain with:  you can either have your data completely safe, or 
> you can execute quickly, but you can't do both.  Robust data integrity 
> slows things down and there's little you can do about it without buying 
> hardware targeted to improve on that.
> 
> The database creation issue just came up on one of the lists here the 
> other day as being particularly slow in the situation you're in, and 
> that parameter change doesn't help there.  There's been some design 
> change suggestions around that to improve the situation, but you're not 
> likely to see those in the server code for a year or more.
> 
> > I should note here that we have not tuned PG at all.
> You could probably see a good sized performance increase just from 
> increasing checkpoint_segments a bit from its default (3).  Since it 
> sounds like you're trying to keep your product's disk space footprint 
> under control, increasing that to around 10 would probably as high as 
> you want to go.  You can't really increase shared_buffers a lot on your 
> platform lest your users get stuck with weird problems where the server 
> won't start, from what I hear OS X is fairly hostile to the kernel 
> adjustments you need to do in order to support that.
> 
> There's a general intro to things you might tune in the postgresql.conf 
> at http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server
> 
> None of those are going to help you out with slow database creation, you 
> might be able to pull down the restore times by tweaking some of the 
> parameters there upwards.  A large number of the tunables recommend to 
> tweak there mainly impact query execution time.
> 
> -- 
> Greg Smith    2ndQuadrant   Baltimore, MD
> PostgreSQL Training, Services and Support
> greg@xxxxxxxxxxxxxxx  www.2ndQuadrant.com
> 
> 
> -- 
> Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general

-- 
  Bruce Momjian  <bruce@xxxxxxxxxx>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux