diff --git a/doc/src/sgml/wal.sgml b/doc/src/sgml/wal.sgml
index 06198bd6e1c..00f0c459ace 100644
--- a/doc/src/sgml/wal.sgml
+++ b/doc/src/sgml/wal.sgml
@@ -1,4 +1,4 @@
-
+
Write-Ahead Logging (WAL)
@@ -290,15 +290,15 @@
- 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.
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 9172f121d1a..37eee5ebfd7 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -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;
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 5dbee5a5d51..8c89fa56af2 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -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}
};
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index 0ce419431a9..7670fdffab4 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -108,7 +108,7 @@
#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