Change default commit_delay to zero, update documentation.
authorTom Lane
Sun, 18 Feb 2001 04:50:43 +0000 (04:50 +0000)
committerTom Lane
Sun, 18 Feb 2001 04:50:43 +0000 (04:50 +0000)
doc/src/sgml/wal.sgml
src/backend/access/transam/xact.c
src/backend/utils/misc/guc.c
src/backend/utils/misc/postgresql.conf.sample

index 06198bd6e1c8c2b7a7e3ff8731123cb8a0ca2f1a..00f0c459acef5a2cf2a78c422e09abf2cb6bf441 100644 (file)
@@ -1,4 +1,4 @@
-
+
 
 
  Write-Ahead Logging (<acronym>WAL</acronym>)
   
 
   
-   The COMMIT_DELAY parameter defines for how long
-   the backend will be forced to sleep after writing a commit record
-   to the log with LogInsert call but before
+   The COMMIT_DELAY parameter defines for how many
+   microseconds the backend will sleep after writing a commit
+   record to the log with LogInsert but before
    performing a LogFlush. This delay allows other
    backends to add their commit records to the log so as to have all
    of them flushed with a single log sync. Unfortunately, this
    mechanism is not fully implemented at release 7.1, so there is at
-   present no point in changing this parameter from its default value
-   of 5 microseconds.
+   present usually no benefit to be gained from increasing this parameter
+   above its default value of zero.
   
  
 
index 9172f121d1a7b00c4acc55eccb3790b9724e76e9..37eee5ebfd7e605ae6a3c0f4c233c7a55bb3929a 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.96 2001/01/24 19:42:51 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.97 2001/02/18 04:50:43 tgl Exp $
  *
  * NOTES
  *     Transaction aborts can now occur two ways:
@@ -221,7 +221,7 @@ int         XactIsoLevel;
 
 #include "access/xlogutils.h"
 
-int            CommitDelay = 5;    /* 1/200000 sec */
+int            CommitDelay = 0;    /* in microseconds */
 
 static void (*_RollbackFunc)(void*) = NULL;
 static void *_RollbackData = NULL;
@@ -667,7 +667,6 @@ RecordTransactionCommit()
    {
        XLogRecData     rdata;
        xl_xact_commit  xlrec;
-       struct timeval  delay;
        XLogRecPtr      recptr;
 
        BufmgrCommit();
@@ -686,11 +685,20 @@ RecordTransactionCommit()
 
        /* 
         * Sleep before commit! So we can flush more than one
-        * commit records per single fsync.
+        * commit records per single fsync.  (The idea is some other
+        * backend may do the XLogFlush while we're sleeping.  This
+        * needs work however, because on most Unixen, the minimum
+        * select() delay is 10msec or more, which is way too long.)
         */
-       delay.tv_sec = 0;
-       delay.tv_usec = CommitDelay;
-       (void) select(0, NULL, NULL, NULL, &delay);
+       if (CommitDelay > 0)
+       {
+           struct timeval  delay;
+
+           delay.tv_sec = 0;
+           delay.tv_usec = CommitDelay;
+           (void) select(0, NULL, NULL, NULL, &delay);
+       }
+
        XLogFlush(recptr);
        MyLastRecPtr.xrecoff = 0;
 
index 5dbee5a5d512e8278f215a9027b9648bac16a7a8..8c89fa56af211df230d0aaff3cfe955000d715a1 100644 (file)
@@ -4,7 +4,7 @@
  * Support for grand unified configuration scheme, including SET
  * command, configuration file, and command line options.
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.29 2001/02/07 23:36:22 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.30 2001/02/18 04:50:43 tgl Exp $
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  * Written by Peter Eisentraut .
@@ -291,7 +291,7 @@ ConfigureNamesInt[] =
     0, 0, 16},
 
    {"commit_delay",        PGC_USERSET,            &CommitDelay,
-    5, 0, 1000},
+    0, 0, 100000},
 
    {NULL, 0, NULL, 0, 0, 0}
 };
index 0ce419431a99b8d157bd4a91e6de6bf7e240d830..7670fdffab470c886798e9cc507a060553851340 100644 (file)
 #wal_buffers = 8 # min 4
 #wal_files = 0 # range 0-64
 #wal_debug = 0 # range 0-16
-#commit_delay = 5 # range 0-1000
+#commit_delay = 0 # range 0-100000
 #checkpoint_timeout = 300 # range 30-1800