Peter, (please take this with a pinch of salt as I am no expert)
Here is a possible scenario: Each of your checkpoints takes 90 seconds or more (you told it so with the checkpoint_completion_target). If your insert fills 3 checkpoint segments (48 megs ) in less than 90 seconds then a new checkpoint request is issued. And maybe a third one, and so on. I imagine that this can flood the disk cache with write requests at some point although I can't explain how. Have a look at the log, see the interval between the checkpoint requests and try to make this (a lot) larger than the checkpoint duration. Start by increasing your checkpoint_segments (to, say, 16). If this doesn't work, maybe the timeout is too short, or the 90 seconds target to generous. Regards, Iulian --- On Fri, 10/3/08, Peter Childs <[EMAIL PROTECTED]> wrote: From: Peter Childs <[EMAIL PROTECTED]> Subject: Re: [PERFORM] Slow Inserts on large tables To: Cc: "Postgresql Performance" <pgsql-performance@postgresql.org> Date: Friday, October 3, 2008, 9:47 AM 2008/10/3 Peter Eisentraut <[EMAIL PROTECTED]>: > Peter Childs wrote: >> >> I have a problem where by an insert on a "large" table will sometimes >> take longer than usual. > >> I think the problem might have something to do with checkpoints, > > Then show us your checkpointing-related parameters. Or try to set them to a > lot higher values so checkpoints happen more rarely and see if that makes a > difference. > > More often or less often? I've currently got them set to checkpoint_segments = 3 checkpoint_timeout = 180s checkpoint_completion_target = 0.5 after reading that doing more smaller checkpoints might make each checkpoint work quicker and hence less of a performance hit when they actually happen. Regards Peter -- Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance