diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2008-11-06 20:51:15 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2008-11-06 20:51:15 +0000 |
commit | 85e2cedf985bfecaf43a18ca17433070f439fb0e (patch) | |
tree | 9348349050eaa2a8a863297c88502263c3a2e338 /src/backend/access/heap/rewriteheap.c | |
parent | cdc197cf3100359cd436757adc0002dad07e3117 (diff) |
Improve bulk-insert performance by keeping the current target buffer pinned
(but not locked, as that would risk deadlocks). Also, make it work in a small
ring of buffers to avoid having bulk inserts trash the whole buffer arena.
Robert Haas, after an idea of Simon Riggs'.
Diffstat (limited to 'src/backend/access/heap/rewriteheap.c')
-rw-r--r-- | src/backend/access/heap/rewriteheap.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/backend/access/heap/rewriteheap.c b/src/backend/access/heap/rewriteheap.c index cd7302bd5d7..18c7a72d64f 100644 --- a/src/backend/access/heap/rewriteheap.c +++ b/src/backend/access/heap/rewriteheap.c @@ -96,7 +96,7 @@ * Portions Copyright (c) 1994-5, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/heap/rewriteheap.c,v 1.15 2008/08/11 11:05:10 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/access/heap/rewriteheap.c,v 1.16 2008/11/06 20:51:14 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -575,7 +575,9 @@ raw_heap_insert(RewriteState state, HeapTuple tup) } else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD) heaptup = toast_insert_or_update(state->rs_new_rel, tup, NULL, - state->rs_use_wal, false); + HEAP_INSERT_SKIP_FSM | + (state->rs_use_wal ? + 0 : HEAP_INSERT_SKIP_WAL)); else heaptup = tup; |