From 57e084718097bd03598a3db8c06b3ba72670737d Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sun, 18 Feb 2001 04:50:43 +0000
Subject: [PATCH] Change default commit_delay to zero, update documentation.

---
 doc/src/sgml/wal.sgml                         | 12 +++++-----
 src/backend/access/transam/xact.c             | 22 +++++++++++++------
 src/backend/utils/misc/guc.c                  |  4 ++--
 src/backend/utils/misc/postgresql.conf.sample |  2 +-
 4 files changed, 24 insertions(+), 16 deletions(-)

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 @@
-<!-- $Header: /cvsroot/pgsql/doc/src/sgml/wal.sgml,v 1.1 2001/01/24 23:15:19 petere Exp $ -->
+<!-- $Header: /cvsroot/pgsql/doc/src/sgml/wal.sgml,v 1.2 2001/02/18 04:50:43 tgl Exp $ -->
 
 <chapter id="wal">
  <title>Write-Ahead Logging (<acronym>WAL</acronym>)</title>
@@ -290,15 +290,15 @@
   </para>
 
   <para>
-   The <varname>COMMIT_DELAY</varname> parameter defines for how long
-   the backend will be forced to sleep after writing a commit record
-   to the log with <function>LogInsert</function> call but before
+   The <varname>COMMIT_DELAY</varname> parameter defines for how many
+   microseconds the backend will sleep after writing a commit
+   record to the log with <function>LogInsert</function> but before
    performing a <function>LogFlush</function>. 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.
   </para>
  </sect1>
 </chapter>
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 <peter_e@gmx.net>.
@@ -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
 
 
-- 
GitLab