Re: New XLOG record indicating WAL-skipping
Fujii Masao <masao.fujii@gmail.com>
From: Fujii Masao <masao.fujii@gmail.com>
To: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Greg Stark <gsstark@mit.edu>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2010-01-16T06:16:26Z
Lists: pgsql-hackers
On Fri, Jan 15, 2010 at 8:28 PM, Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> wrote: > I don't like special-casing UNLOGGED records in XLogInsert and > ReadRecord(). Those functions are complicated enough already. The > special handling from XLogInsert() (and a few other places) is only > required because the UNLOGGED records carry no payload. That's easy to > avoid, just add some payload to them, doesn't matter what it is. And I > don't think ReadRecord() is the right place to emit the errors/warnings, > that belongs naturally in xlog_redo(). > > It might be useful to add some information in the records telling why > WAL-logging was skipped. It might turn out to be useful in debugging. > That also conveniently adds payload to the records, to avoid the > special-casing in XLogInsert() :-). > > I think it's a premature optimization to skip writing the records if > we've written in the same session already. Especially with the 'reason' > information added to the records, it's nice to have a record of each > such operation. All operations that skip WAL-logging are heavy enough > that an additional WAL record will make no difference. I can see that it > was required to avoid the flooding from heap_insert(), but we can move > the XLogSkipLogging() call from heap_insert() to heap_sync(). > > Attached is an updated patch, doing the above. Am I missing anything? Thanks a lot! Your change seems to be OK. Regards, -- Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center