Re: INSERT...ON DUPLICATE KEY IGNORE

From: Gavin Flower <GavinFlower(at)archidevsys(dot)co(dot)nz>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Andres Freund <andres(at)2ndquadrant(dot)com>, Peter Geoghegan <pg(at)heroku(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: INSERT...ON DUPLICATE KEY IGNORE
Date: 2013-09-04 20:42:35
Message-ID: 52279B3B.2020404@archidevsys.co.nz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 05/09/13 08:26, Robert Haas wrote:
> On Sat, Aug 31, 2013 at 2:34 PM, Andres Freund <andres(at)2ndquadrant(dot)com> wrote:
>> After some thinking I don't think any solution primarily based on
>> holding page level locks across other index operations is going to scale
>> ok.
> I'd like to chime in with a large +1 for this sentiment and pretty
> much everything else Andres said further downthread. The operations
> across which you're proposing to hold buffer locks seem at least an
> order of magnitude too complex to get away with something like that.
> Concurrent readers will block in a non-interruptible wait if they try
> to access a buffer, and that's a situation that will be intolerable
> if, for example, it can persist across a disk I/O. And I don't see
> any way to avoid that.
>
> One possible alternative to inserting promises into the index pages
> themselves might be to use some kind of heavyweight lock. The way
> that SIREAD locks work is not entirely dissimilar to what's needed
> here, I think. Of course, the performance implications of checking
> for lots of extra locks during inserts could be pretty bad, so you'd
> probably need some way of avoiding that in common cases, which I don't
> know exactly how to do, but maybe there's a way.
>
How about an 'Expensive bit' (of course, renamed to sound more
professional and to better indicate what it does!) - if the bit is set,
then do the expensive processing. This should have minimal impact for
the common case, so extensive checking would only be required when lots
of locks need to be checked.

I strongly suspect that the situation, is way more complicated, than I
imply above - but possibly, a more sophisticated version of the above
might help?

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tomas Vondra 2013-09-04 20:46:55 Re: [rfc] overhauling pgstat.stat
Previous Message Robert Haas 2013-09-04 20:26:53 Re: INSERT...ON DUPLICATE KEY IGNORE