Re: Bulk Insert tuning - Mailing list pgsql-patches

From Heikki Linnakangas
Subject Re: Bulk Insert tuning
Date
Msg-id 47D68363.8090009@enterprisedb.com
Whole thread Raw
In response to Re: Bulk Insert tuning  (Gavin Sherry <swm@alcove.com.au>)
List pgsql-patches
Gavin Sherry wrote:
> On Tue, Feb 26, 2008 at 02:43:51PM +0000, Simon Riggs wrote:
>> Following patch implements a simple mechanism to keep a buffer pinned
>> while we are bulk loading.
>
> CK Tan and I worked on something similar but the problem we discovered
> was self locking. Consider a primary key: we insert a tuple into a
> buffer and do not release the exclusive lock. The btree code fetches the
> buffer and tries to share lock it, but we've already exclusive locked
> it. Oops. The performance improvement, though, makes it worth seeing if
> there is a solution.

That's not a problem if you only keep the buffer pinned, not locked. In
my experience, pinning is the more expensive part, with the lookup into
the buffer lookup table. Locking isn't free either, of course, but just
avoiding the pin+unpin would help a lot.

--
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com

pgsql-patches by date:

Previous
From: "Heikki Linnakangas"
Date:
Subject: Re: TransactionIdIsInProgress() cache
Next
From: Alvaro Herrera
Date:
Subject: Re: TransactionIdIsInProgress() cache