Index: doc/src/sgml/runtime.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/runtime.sgml,v retrieving revision 1.128 diff -c -c -r1.128 runtime.sgml *** doc/src/sgml/runtime.sgml 29 Aug 2002 19:53:58 -0000 1.128 --- doc/src/sgml/runtime.sgml 30 Aug 2002 03:46:18 -0000 *************** *** 1949,1965 **** - WAL_FILES (integer) - - - Number of log files that are created in advance at checkpoint - time. This option can only be set at server start or in the - postgresql.conf file. - - - - - WAL_SYNC_METHOD (string) --- 1949,1954 ---- Index: doc/src/sgml/wal.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/wal.sgml,v retrieving revision 1.16 diff -c -c -r1.16 wal.sgml *** doc/src/sgml/wal.sgml 5 Jul 2002 19:06:11 -0000 1.16 --- doc/src/sgml/wal.sgml 30 Aug 2002 03:46:18 -0000 *************** *** 276,284 **** By default a new 16MB segment file is created only if more than 75% of the current segment has been used. This is inadequate if the system generates more than 4MB of log output between checkpoints. - One can instruct the server to pre-create up to 64 log segments - at checkpoint time by modifying the WAL_FILES - configuration parameter. --- 276,281 ---- *************** *** 306,325 **** The number of 16MB segment files will always be at least ! WAL_FILES + 1, and will normally not exceed ! WAL_FILES + MAX(WAL_FILES, ! CHECKPOINT_SEGMENTS) + 1. This may be used to ! estimate space requirements for WAL. Ordinarily, when an old log ! segment files are no longer needed, they are recycled (renamed to ! become the next sequential future segments). If, due to a short-term ! peak of log output rate, there are more than ! WAL_FILES + MAX(WAL_FILES, ! CHECKPOINT_SEGMENTS) + 1 segment files, then ! unneeded segment files will be deleted instead of recycled until the ! system gets back under this limit. (If this happens on a regular ! basis, WAL_FILES should be increased to avoid it. ! Deleting log segments that will only have to be created again later ! is expensive and pointless.) --- 303,316 ---- The number of 16MB segment files will always be at least ! 1, and will normally not exceed CHECKPOINT_SEGMENTS) ! + 1. This may be used to estimate space requirements for WAL. ! Ordinarily, when old log segment files are no longer needed, ! they are recycled (renamed to become the next sequential future ! segments). If, due to a short-term peak of log output rate, there ! are more than CHECKPOINT_SEGMENTS) + 1 segment files, ! the unneeded segment files will be deleted instead of recycled until the ! system gets back under this limit. Index: src/backend/access/transam/xlog.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/access/transam/xlog.c,v retrieving revision 1.102 diff -c -c -r1.102 xlog.c *** src/backend/access/transam/xlog.c 17 Aug 2002 15:12:06 -0000 1.102 --- src/backend/access/transam/xlog.c 30 Aug 2002 03:46:21 -0000 *************** *** 87,93 **** /* User-settable parameters */ int CheckPointSegments = 3; int XLOGbuffers = 8; - int XLOGfiles = 0; /* # of files to preallocate during ckpt */ int XLOG_DEBUG = 0; char *XLOG_sync_method = NULL; const char XLOG_sync_method_default[] = DEFAULT_SYNC_METHOD_STR; --- 87,92 ---- *************** *** 97,103 **** /* * XLOGfileslop is used in the code as the allowed "fuzz" in the number of * preallocated XLOG segments --- we try to have at least XLOGfiles advance ! * segments but no more than XLOGfiles+XLOGfileslop segments. This could * be made a separate GUC variable, but at present I think it's sufficient * to hardwire it as 2*CheckPointSegments+1. Under normal conditions, a * checkpoint will free no more than 2*CheckPointSegments log segments, and --- 96,102 ---- /* * XLOGfileslop is used in the code as the allowed "fuzz" in the number of * preallocated XLOG segments --- we try to have at least XLOGfiles advance ! * segments but no more than XLOGfileslop segments. This could * be made a separate GUC variable, but at present I think it's sufficient * to hardwire it as 2*CheckPointSegments+1. Under normal conditions, a * checkpoint will free no more than 2*CheckPointSegments log segments, and *************** *** 1422,1428 **** * ours to pre-create a future log segment. */ if (!InstallXLogFileSegment(log, seg, tmppath, ! *use_existent, XLOGfiles + XLOGfileslop, use_lock)) { /* No need for any more future segments... */ --- 1421,1427 ---- * ours to pre-create a future log segment. */ if (!InstallXLogFileSegment(log, seg, tmppath, ! *use_existent, XLOGfileslop, use_lock)) { /* No need for any more future segments... */ *************** *** 1568,1587 **** uint32 _logSeg; int lf; bool use_existent; - int i; XLByteToPrevSeg(endptr, _logId, _logSeg); ! if (XLOGfiles > 0) ! { ! for (i = 1; i <= XLOGfiles; i++) ! { ! NextLogSeg(_logId, _logSeg); ! use_existent = true; ! lf = XLogFileInit(_logId, _logSeg, &use_existent, true); ! close(lf); ! } ! } ! else if ((endptr.xrecoff - 1) % XLogSegSize >= (uint32) (0.75 * XLogSegSize)) { NextLogSeg(_logId, _logSeg); --- 1567,1575 ---- uint32 _logSeg; int lf; bool use_existent; XLByteToPrevSeg(endptr, _logId, _logSeg); ! if ((endptr.xrecoff - 1) % XLogSegSize >= (uint32) (0.75 * XLogSegSize)) { NextLogSeg(_logId, _logSeg); *************** *** 1635,1645 **** /* * Before deleting the file, see if it can be recycled as * a future log segment. We allow recycling segments up ! * to XLOGfiles + XLOGfileslop segments beyond the current * XLOG location. */ if (InstallXLogFileSegment(endlogId, endlogSeg, path, ! true, XLOGfiles + XLOGfileslop, true)) { elog(LOG, "recycled transaction log file %s", --- 1623,1633 ---- /* * Before deleting the file, see if it can be recycled as * a future log segment. We allow recycling segments up ! * to XLOGfileslop segments beyond the current * XLOG location. */ if (InstallXLogFileSegment(endlogId, endlogSeg, path, ! true, XLOGfileslop, true)) { elog(LOG, "recycled transaction log file %s", Index: src/backend/utils/misc/guc.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/utils/misc/guc.c,v retrieving revision 1.87 diff -c -c -r1.87 guc.c *** src/backend/utils/misc/guc.c 29 Aug 2002 21:02:12 -0000 1.87 --- src/backend/utils/misc/guc.c 30 Aug 2002 03:46:23 -0000 *************** *** 641,651 **** }, { - { "wal_files", PGC_SIGHUP }, &XLOGfiles, - 0, 0, 64, NULL, NULL - }, - - { { "wal_debug", PGC_SUSET }, &XLOG_DEBUG, 0, 0, 16, NULL, NULL }, --- 641,646 ---- Index: src/include/access/xlog.h =================================================================== RCS file: /cvsroot/pgsql-server/src/include/access/xlog.h,v retrieving revision 1.35 diff -c -c -r1.35 xlog.h *** src/include/access/xlog.h 17 Aug 2002 15:12:07 -0000 1.35 --- src/include/access/xlog.h 30 Aug 2002 03:46:23 -0000 *************** *** 185,191 **** /* these variables are GUC parameters related to XLOG */ extern int CheckPointSegments; extern int XLOGbuffers; - extern int XLOGfiles; extern int XLOG_DEBUG; extern char *XLOG_sync_method; extern const char XLOG_sync_method_default[]; --- 185,190 ----