Luke,
> work_mem = 131072 # min 64, size in KB
Incidentally, this is much too high for an OLTP application, although I don't
think this would have affected the test.
> shared_buffers = 16000 # min 16, at least max_connections*2, 8KB
> each checkpoint_segments = 128 # in logfile segments, min 1, 16MB
> each effective_cache_size = 750000 # typically 8KB each
> fsync=false # turns forced synchronization on or off
Try changing:
wal_buffers = 256
and try Bruce's stop full_page_writes patch.
> I guess we see the real culprit here. Anyone surprised it's the WAL?
Nope. On high-end OLTP stuff, it's crucial that the WAL have its own
dedicated disk resource.
Also, running a complex stored procedure for each and every word in each
e-mail is rather deadly ... with the e-mail traffic our server at Globix
receives, for example, that would amount to running it about 1,000 times a
minute. It would be far better to batch this, somehow, maybe using temp
tables.
--
Josh Berkus
Aglio Database Solutions
San Francisco