On Tue, 2004-12-14 at 23:31, Tom Lane wrote: > Simon Riggs <[EMAIL PROTECTED]> writes: > > DEBUG1 messages showed that there is an apparent limit of 255 xlog files > > per checkpoint - > > The volume-based checkpoint trigger code is > > if (IsUnderPostmaster && > (openLogId != RedoRecPtr.xlogid || > openLogSeg >= (RedoRecPtr.xrecoff / XLogSegSize) + > (uint32) CheckPointSegments)) > { > #ifdef WAL_DEBUG > if (XLOG_DEBUG) > elog(LOG, "time for a checkpoint, signaling > bgwriter"); > #endif > RequestCheckpoint(false); > } > > which now that I look at it obviously forces a checkpoint whenever > xlogid (the upper half of XLogRecPtr) changes, ie every 4GB of WAL > output. I suppose on a high-performance platform it's possible that > one would want checkpoints further apart than that, though the idea > of plowing through multiple gigabytes of WAL in order to recover from > a crash is a bit daunting. > > It's not immediately obvious how to recast the comparison without > either creating overflow bugs or depending on 64-bit-int arithmetic > being available. Thoughts?
Thanks for finding it. It was staring me in the face. I'd say no code changes for 8.0, now we know what's causing it. A doc patch to show the limit is probably just going to annoy the translators at this stage also. Reasons: - you can recompile using larger XLogSegSize, if you care to - the real answer is to reduce the xlog volume -- Best Regards, Simon Riggs ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]