Re: Allowing WAL fsync to be done via O_SYNC
От | Bruce Momjian |
---|---|
Тема | Re: Allowing WAL fsync to be done via O_SYNC |
Дата | |
Msg-id | 200103152026.PAA15844@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Re: Allowing WAL fsync to be done via O_SYNC (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Allowing WAL fsync to be done via O_SYNC
|
Список | pgsql-hackers |
> Peter Eisentraut <peter_e@gmx.net> writes: > > As a general rule, if something can be a run time option, as opposed to a > > compile time option, then it should be. At the very least you keep the > > installation simple and allow for easier experimenting. > > I've been mentally working through the code, and see only one reason why > it might be necessary to go with a compile-time choice: suppose we see > that none of O_DSYNC, O_SYNC, O_FSYNC, [others] are defined? With the > compile-time choice it's easy: #define USE_FSYNC_FOR_WAL, and sail on. > If it's a GUC variable then we need a way to prevent the GUC option from > becoming unset (which would disable the fsync() calls, leaving nothing > to replace 'em). Doable, perhaps, but seems kind of ugly ... any > thoughts about that? I don't think having something a run-time option is always a good idea. Giving people too many choices is often confusing. I think we should just check at compile time, and choose O_* if we have it, and if not, use fsync(). No one will ever do the proper timing tests to know which is better except us. Also, it seems O_* should be faster because you are fsync'ing the buffer you just wrote, so there is no looking around for dirty buffers like fsync(). -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
В списке pgsql-hackers по дате отправления: