Complete TODO item:

* Remove wal_files postgresql.conf option because WAL files are
	  now recycled
This commit is contained in:
Bruce Momjian 2002-08-30 16:50:50 +00:00
parent fefb57ce74
commit 63653f7ffa
5 changed files with 18 additions and 56 deletions

View File

@ -1,5 +1,5 @@
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.129 2002/08/30 00:28:40 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.130 2002/08/30 16:50:49 momjian Exp $
--> -->
<Chapter Id="runtime"> <Chapter Id="runtime">
@ -1949,17 +1949,6 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><varname>WAL_FILES</varname> (<type>integer</type>)</term>
<listitem>
<para>
Number of log files that are created in advance at checkpoint
time. This option can only be set at server start or in the
<filename>postgresql.conf</filename> file.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><varname>WAL_SYNC_METHOD</varname> (<type>string</type>)</term> <term><varname>WAL_SYNC_METHOD</varname> (<type>string</type>)</term>
<listitem> <listitem>

View File

@ -1,4 +1,4 @@
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/wal.sgml,v 1.16 2002/07/05 19:06:11 momjian Exp $ --> <!-- $Header: /cvsroot/pgsql/doc/src/sgml/wal.sgml,v 1.17 2002/08/30 16:50:50 momjian Exp $ -->
<chapter id="wal"> <chapter id="wal">
<title>Write-Ahead Logging (<acronym>WAL</acronym>)</title> <title>Write-Ahead Logging (<acronym>WAL</acronym>)</title>
@ -276,9 +276,6 @@
By default a new 16MB segment file is created only if more than 75% of 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 the current segment has been used. This is inadequate if the system
generates more than 4MB of log output between checkpoints. 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 <varname>WAL_FILES</varname>
configuration parameter.
</para> </para>
<para> <para>
@ -306,20 +303,14 @@
<para> <para>
The number of 16MB segment files will always be at least The number of 16MB segment files will always be at least
<varname>WAL_FILES</varname> + 1, and will normally not exceed 1, and will normally not exceed <varname>CHECKPOINT_SEGMENTS</varname>)
<varname>WAL_FILES</varname> + MAX(<varname>WAL_FILES</varname>, + 1. This may be used to estimate space requirements for WAL.
<varname>CHECKPOINT_SEGMENTS</varname>) + 1. This may be used to Ordinarily, when old log segment files are no longer needed,
estimate space requirements for WAL. Ordinarily, when an old log they are recycled (renamed to become the next sequential future
segment files are no longer needed, they are recycled (renamed to segments). If, due to a short-term peak of log output rate, there
become the next sequential future segments). If, due to a short-term are more than <varname>CHECKPOINT_SEGMENTS</varname>) + 1 segment files,
peak of log output rate, there are more than the unneeded segment files will be deleted instead of recycled until the
<varname>WAL_FILES</varname> + MAX(<varname>WAL_FILES</varname>, system gets back under this limit.
<varname>CHECKPOINT_SEGMENTS</varname>) + 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, <varname>WAL_FILES</varname> should be increased to avoid it.
Deleting log segments that will only have to be created again later
is expensive and pointless.)
</para> </para>
<para> <para>

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.102 2002/08/17 15:12:06 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.103 2002/08/30 16:50:50 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -87,7 +87,6 @@
/* User-settable parameters */ /* User-settable parameters */
int CheckPointSegments = 3; int CheckPointSegments = 3;
int XLOGbuffers = 8; int XLOGbuffers = 8;
int XLOGfiles = 0; /* # of files to preallocate during ckpt */
int XLOG_DEBUG = 0; int XLOG_DEBUG = 0;
char *XLOG_sync_method = NULL; char *XLOG_sync_method = NULL;
const char XLOG_sync_method_default[] = DEFAULT_SYNC_METHOD_STR; const char XLOG_sync_method_default[] = DEFAULT_SYNC_METHOD_STR;
@ -97,7 +96,7 @@ char XLOG_archive_dir[MAXPGPATH]; /* null string means
/* /*
* XLOGfileslop is used in the code as the allowed "fuzz" in the number of * 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 * preallocated XLOG segments --- we try to have at least XLOGfiles advance
* segments but no more than XLOGfiles+XLOGfileslop segments. This could * segments but no more than XLOGfileslop segments. This could
* be made a separate GUC variable, but at present I think it's sufficient * 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 * to hardwire it as 2*CheckPointSegments+1. Under normal conditions, a
* checkpoint will free no more than 2*CheckPointSegments log segments, and * checkpoint will free no more than 2*CheckPointSegments log segments, and
@ -1422,7 +1421,7 @@ XLogFileInit(uint32 log, uint32 seg,
* ours to pre-create a future log segment. * ours to pre-create a future log segment.
*/ */
if (!InstallXLogFileSegment(log, seg, tmppath, if (!InstallXLogFileSegment(log, seg, tmppath,
*use_existent, XLOGfiles + XLOGfileslop, *use_existent, XLOGfileslop,
use_lock)) use_lock))
{ {
/* No need for any more future segments... */ /* No need for any more future segments... */
@ -1568,20 +1567,9 @@ PreallocXlogFiles(XLogRecPtr endptr)
uint32 _logSeg; uint32 _logSeg;
int lf; int lf;
bool use_existent; bool use_existent;
int i;
XLByteToPrevSeg(endptr, _logId, _logSeg); XLByteToPrevSeg(endptr, _logId, _logSeg);
if (XLOGfiles > 0) if ((endptr.xrecoff - 1) % XLogSegSize >=
{
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)) (uint32) (0.75 * XLogSegSize))
{ {
NextLogSeg(_logId, _logSeg); NextLogSeg(_logId, _logSeg);
@ -1635,11 +1623,11 @@ MoveOfflineLogs(uint32 log, uint32 seg, XLogRecPtr endptr)
/* /*
* Before deleting the file, see if it can be recycled as * Before deleting the file, see if it can be recycled as
* a future log segment. We allow recycling segments up * a future log segment. We allow recycling segments up
* to XLOGfiles + XLOGfileslop segments beyond the current * to XLOGfileslop segments beyond the current
* XLOG location. * XLOG location.
*/ */
if (InstallXLogFileSegment(endlogId, endlogSeg, path, if (InstallXLogFileSegment(endlogId, endlogSeg, path,
true, XLOGfiles + XLOGfileslop, true, XLOGfileslop,
true)) true))
{ {
elog(LOG, "recycled transaction log file %s", elog(LOG, "recycled transaction log file %s",

View File

@ -5,7 +5,7 @@
* command, configuration file, and command line options. * command, configuration file, and command line options.
* See src/backend/utils/misc/README for more information. * See src/backend/utils/misc/README for more information.
* *
* $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.87 2002/08/29 21:02:12 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.88 2002/08/30 16:50:50 momjian Exp $
* *
* Copyright 2000 by PostgreSQL Global Development Group * Copyright 2000 by PostgreSQL Global Development Group
* Written by Peter Eisentraut <peter_e@gmx.net>. * Written by Peter Eisentraut <peter_e@gmx.net>.
@ -640,11 +640,6 @@ static struct config_int
8, 4, INT_MAX, NULL, NULL 8, 4, INT_MAX, NULL, NULL
}, },
{
{ "wal_files", PGC_SIGHUP }, &XLOGfiles,
0, 0, 64, NULL, NULL
},
{ {
{ "wal_debug", PGC_SUSET }, &XLOG_DEBUG, { "wal_debug", PGC_SUSET }, &XLOG_DEBUG,
0, 0, 16, NULL, NULL 0, 0, 16, NULL, NULL

View File

@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $Id: xlog.h,v 1.35 2002/08/17 15:12:07 momjian Exp $ * $Id: xlog.h,v 1.36 2002/08/30 16:50:50 momjian Exp $
*/ */
#ifndef XLOG_H #ifndef XLOG_H
#define XLOG_H #define XLOG_H
@ -185,7 +185,6 @@ extern XLogRecPtr ProcLastRecEnd;
/* these variables are GUC parameters related to XLOG */ /* these variables are GUC parameters related to XLOG */
extern int CheckPointSegments; extern int CheckPointSegments;
extern int XLOGbuffers; extern int XLOGbuffers;
extern int XLOGfiles;
extern int XLOG_DEBUG; extern int XLOG_DEBUG;
extern char *XLOG_sync_method; extern char *XLOG_sync_method;
extern const char XLOG_sync_method_default[]; extern const char XLOG_sync_method_default[];