]> granicus.if.org Git - postgresql/commitdiff
Update wal files computation documentation.
authorBruce Momjian <bruce@momjian.us>
Mon, 11 Feb 2002 23:25:14 +0000 (23:25 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 11 Feb 2002 23:25:14 +0000 (23:25 +0000)
doc/src/sgml/wal.sgml

index 07d279685dce7016d81c205061bec59db821eff0..f080c6d98736af6dce88d527cd4493fd822250ee 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $Header: /cvsroot/pgsql/doc/src/sgml/wal.sgml,v 1.14 2001/11/28 20:49:10 petere Exp $ -->
+<!-- $Header: /cvsroot/pgsql/doc/src/sgml/wal.sgml,v 1.15 2002/02/11 23:25:14 momjian Exp $ -->
 
 <chapter id="wal">
  <title>Write-Ahead Logging (<acronym>WAL</acronym>)</title>
@@ -70,8 +70,8 @@
     Problems with indexes (problems 1 and 2) could possibly have been
     fixed by additional <function>fsync()</function> calls, but it is
     not obvious how to handle the last case without
-    <acronym>WAL</acronym>; <acronym>WAL</acronym> saves the entire
-    data page content in the log if that is required to ensure page
+    <acronym>WAL</acronym>; <acronym>WAL</acronym> saves the entire data
+    page content in the log if that is required to ensure page
     consistency for after-crash recovery.
    </para>
   </sect2>
     made by aborted transactions will still occupy disk space and that
     we still need a permanent <filename>pg_clog</filename> file to hold
     the status of transactions, since we are not able to re-use
-    transaction identifiers.  Once UNDO is implemented,
+    transaction identifiers. Once UNDO is implemented,
     <filename>pg_clog</filename> will no longer be required to be
     permanent; it will be possible to remove
-    <filename>pg_clog</filename> at shutdown.  (However, the urgency
-    of this concern has decreased greatly with the adoption of a segmented
+    <filename>pg_clog</filename> at shutdown. (However, the urgency of
+    this concern has decreased greatly with the adoption of a segmented
     storage method for <filename>pg_clog</filename> --- it is no longer
     necessary to keep old <filename>pg_clog</filename> entries around
     forever.)
    </para>
 
    <para>
-    A difficulty standing in the way of realizing these benefits is that they
-    require saving <acronym>WAL</acronym> entries for considerable periods
-    of time (eg, as long as the longest possible transaction if transaction
-    UNDO is wanted).  The present <acronym>WAL</acronym> format is
-    extremely bulky since it includes many disk page snapshots.
-    This is not a serious concern at present, since the entries only need
-    to be kept for one or two checkpoint intervals; but to achieve
-    these future benefits some sort of compressed <acronym>WAL</acronym>
-    format will be needed.
+    A difficulty standing in the way of realizing these benefits is that
+    they require saving <acronym>WAL</acronym> entries for considerable
+    periods of time (eg, as long as the longest possible transaction if
+    transaction UNDO is wanted). The present <acronym>WAL</acronym>
+    format is extremely bulky since it includes many disk page
+    snapshots. This is not a serious concern at present, since the
+    entries only need to be kept for one or two checkpoint intervals;
+    but to achieve these future benefits some sort of compressed
+    <acronym>WAL</acronym> format will be needed.
    </para>
   </sect2>
  </sect1>
    not occur often enough to prevent <acronym>WAL</acronym> buffers
    being written by <function>LogInsert</function>. On such systems
    one should increase the number of <acronym>WAL</acronym> buffers by
-   modifying the <varname>WAL_BUFFERS</varname> parameter. The default
-   number of <acronym>WAL</acronym> buffers is 8.  Increasing this
-   value will correspondingly increase shared memory usage.
+   modifying the <filename>postgresql.conf</filename> <varname>
+   WAL_BUFFERS</varname> parameter. The default number of <acronym>
+   WAL</acronym> buffers is 8.  Increasing this value will 
+   correspondingly increase shared memory usage.
   </para>
 
   <para>
 
   <para>
    Reducing <varname>CHECKPOINT_SEGMENTS</varname> and/or
-   <varname>CHECKPOINT_TIMEOUT</varname> causes checkpoints to be
-   done more often.  This allows faster after-crash recovery (since
-   less work will need to be redone).  However, one must balance this against
-   the increased cost of flushing dirty data pages more often.  In addition,
-   to ensure data page consistency, the first modification of a data page
-   after each checkpoint results in logging the entire page content.
-   Thus a smaller checkpoint interval increases the volume of output to
-   the log, partially negating the goal of using a smaller interval, and
-   in any case causing more disk I/O.
+   <varname>CHECKPOINT_TIMEOUT</varname> causes checkpoints to be done
+   more often. This allows faster after-crash recovery (since less work
+   will need to be redone). However, one must balance this against the
+   increased cost of flushing dirty data pages more often. In addition,
+   to ensure data page consistency, the first modification of a data
+   page after each checkpoint results in logging the entire page
+   content. Thus a smaller checkpoint interval increases the volume of
+   output to the log, partially negating the goal of using a smaller
+   interval, and in any case causing more disk I/O.
   </para>
 
   <para>
    The number of 16MB segment files will always be at least
    <varname>WAL_FILES</varname> + 1, and will normally not exceed
-   <varname>WAL_FILES</varname> + 2 * <varname>CHECKPOINT_SEGMENTS</varname>
-   + 1.  This may be used to estimate space requirements for WAL.  Ordinarily,
-   when an old log segment file is no longer needed, it is recycled (renamed
-   to become the next sequential future segment).  If, due to a short-term
-   peak of log output rate, there are more than <varname>WAL_FILES</varname> +
-   2 * <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.)
+   <varname>WAL_FILES</varname> + MAX(<varname>WAL_FILES</varname>,
+   <varname>CHECKPOINT_SEGMENTS</varname>) + 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
+   <varname>WAL_FILES</varname> + MAX(<varname>WAL_FILES</varname>,
+   <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>