postgresql/src/backend/storage/ipc
Tom Lane 5749f6ef0c Rewrite btree vacuuming to fold the former bulkdelete and cleanup operations
into a single mostly-physical-order scan of the index.  This requires some
ticklish interlocking considerations, but should create no material
performance impact on normal index operations (at least given the
already-committed changes to make scans work a page at a time).  VACUUM
itself should get significantly faster in any index that's degenerated to a
very nonlinear page order.  Also, we save one pass over the index entirely,
except in the case where there were no deletions to do and so only one pass
happened anyway.

Original patch by Heikki Linnakangas, rework by Tom Lane.
2006-05-08 00:00:17 +00:00
..
ipc.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
ipci.c Rewrite btree vacuuming to fold the former bulkdelete and cleanup operations 2006-05-08 00:00:17 +00:00
Makefile Split the shared-memory array of PGPROC pointers out of the sinval 2005-05-19 21:35:48 +00:00
pmsignal.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
procarray.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
README $Header: -> $PostgreSQL Changes ... 2003-11-29 19:52:15 +00:00
shmem.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
shmqueue.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
sinval.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
sinvaladt.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00

$PostgreSQL: pgsql/src/backend/storage/ipc/README,v 1.4 2003/11/29 19:51:56 pgsql Exp $
Mon Jul 18 11:09:22 PDT 1988  W.KLAS

Cache invalidation synchronization routines:
===========================================

The cache synchronization is done using a message queue. Every
backend can register a message which then has to be read by
all backends. A message read by all backends is removed from the 
queue automatically. If a message has been lost because the buffer
was full, all backends that haven't read this message will be
told that they have to reset their cache state. This is done
at the time when they try to read the message queue.

The message queue is implemented as a shared buffer segment. Actually,
the queue is a circle to allow fast inserting, reading (invalidate data) and
maintaining the buffer.