postgresql/src
Tom Lane fad153ec45 Rewrite the sinval messaging mechanism to reduce contention and avoid
unnecessary cache resets.  The major changes are:

* When the queue overflows, we only issue a cache reset to the specific
backend or backends that still haven't read the oldest message, rather
than resetting everyone as in the original coding.

* When we observe backend(s) falling well behind, we signal SIGUSR1
to only one backend, the one that is furthest behind and doesn't already
have a signal outstanding for it.  When it finishes catching up, it will
in turn signal SIGUSR1 to the next-furthest-back guy, if there is one that
is far enough behind to justify a signal.  The PMSIGNAL_WAKEN_CHILDREN
mechanism is removed.

* We don't attempt to clean out dead messages after every message-receipt
operation; rather, we do it on the insertion side, and only when the queue
fullness passes certain thresholds.

* Split SInvalLock into SInvalReadLock and SInvalWriteLock so that readers
don't block writers nor vice versa (except during the infrequent queue
cleanout operations).

* Transfer multiple sinval messages for each acquisition of a read or
write lock.
2008-06-19 21:32:56 +00:00
..
backend Rewrite the sinval messaging mechanism to reduce contention and avoid 2008-06-19 21:32:56 +00:00
bin Update "help" output to reflect that \timing now takes an optional on/off 2008-06-11 10:55:43 +00:00
include Rewrite the sinval messaging mechanism to reduce contention and avoid 2008-06-19 21:32:56 +00:00
interfaces Added lost sysmbol SQL_SQL to list of allowed variable names. 2008-06-04 12:23:34 +00:00
makefiles Implement a few changes to how shared libraries and dynamically loadable 2008-04-07 14:15:58 +00:00
pl Clean up a number of bogosities around pltcl's handling of the Tcl "result": 2008-06-17 00:52:43 +00:00
port Use CRITICAL_SECTION instead of Mutexes for thread-locking in libpq on 2008-05-21 14:20:48 +00:00
template Use SYSV semaphores rather than POSIX on Darwin >= 6.0 (i.e., OS X 10.2 2007-09-26 00:32:46 +00:00
test Refactor the handling of the various DropStmt variants so that when multiple 2008-06-14 18:04:34 +00:00
timezone Update time zone data files to tzdata release 2008c (DST law changes in 2008-06-01 18:23:00 +00:00
tools Prevent CVS from mangling script 2008-06-15 21:58:55 +00:00
tutorial Add $PostgreSQL$ markers to a lot of files that were missing them. 2008-05-17 01:28:26 +00:00
bcc32.mak Remove old-style win32 client-only visual c++ build infrastructure for everything except 2007-03-05 14:18:38 +00:00
DEVELOPERS Testing commit stuff 2006-07-10 15:50:02 +00:00
Makefile Catch all errors in for and while loops in makefiles. Don't ignore any 2008-03-18 16:24:50 +00:00
Makefile.global.in Upgrade to Autoconf 2.61: 2008-02-17 16:36:43 +00:00
Makefile.shlib On cygwin and win32, don't override the shlib name when building a module. 2008-04-08 09:50:29 +00:00
nls-global.mk Another fix for compiles on an empty 'po' directory. 2008-05-17 21:27:12 +00:00
win32.mak Update supported standalone VC++ version to 7.1+ only, and fix 2007-08-03 10:47:11 +00:00