From 57e084718097bd03598a3db8c06b3ba72670737d Mon Sep 17 00:00:00 2001 From: Tom Lane 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 06198bd6e1..00f0c459ac 100644 --- a/doc/src/sgml/wal.sgml +++ b/doc/src/sgml/wal.sgml @@ -1,4 +1,4 @@ - + Write-Ahead Logging (<acronym>WAL</acronym>) @@ -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 9172f121d1..37eee5ebfd 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 5dbee5a5d5..8c89fa56af 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 0ce419431a..7670fdffab 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 -- 2.40.0