| From: | Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp> | 
|---|---|
| To: | kgrittn(at)ymail(dot)com | 
| Cc: | pg(at)heroku(dot)com, pgsql-hackers(at)postgresql(dot)org | 
| Subject: | Re: Reduce pinning in btree indexes | 
| Date: | 2015-03-16 06:56:24 | 
| Message-ID: | 20150316.155624.73903538.horiguchi.kyotaro@lab.ntt.co.jp | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
Thank you for rewriting.
I was satisfied with the current patch (Head of btnopin on your
github repos). I have no further comment on the functions. Peter
might have a comment on the README description but I suppose I
can push this to the committers.
I attached the your latest patch to this mail as
bt-nopin-v4.patch for now. Please check that there's no problem
in it.
- By this patch, index scan becomes to release buffer pins while
  fetching index tuples in a page, so it should reduce the chance
  of index scans with long duration to block vacuum, because
  vacuums now can easily overtake the current position of an
  index scan. I didn't actually measured how effective it is,
  though.
- It looks to work correctly for scan in both direction with
  simultaneous page splitting and vacuum.
- It makes no performance deterioration, on the contrary it
  accelerates index scans. It seems to be because of removal of
  lock and unlock surrounding _bt_steppage in bt_next.
- It applies cleanly on the current head on the master branch.
- It has enough intelligible comments and README descriptions.
- An inrelevant typo fix is made in buffers/README by this
  patch. But it doesn't seem necessary to be separated.
regards,
At Fri, 13 Mar 2015 15:08:25 +0000 (UTC), Kevin Grittner <kgrittn(at)ymail(dot)com> wrote in <848652045(dot)4044965(dot)1426259305233(dot)JavaMail(dot)yahoo(at)mail(dot)yahoo(dot)com>
> Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp> wrote:
> > At Thu, 12 Mar 2015 15:27:37 -0700, Peter Geoghegan <pg(at)heroku(dot)com> wrote:
> >> On Sat, Feb 14, 2015 at 4:19 PM, Kevin Grittner <kgrittn(at)ymail(dot)com> wrote:
> >> I think you should call out those "confounding factors" in the
> >> README. It's not hard to piece them together from
> >> _bt_drop_lock_and_maybe_pin(), but I think you should anyway.
> 
> OK:
> 
> https://github.com/kgrittn/postgres/commit/f5f59ded30b114ac83b90a00ba1fa5ef490b994e
It looks perfect for me. Do you have any further request on this,
Peter?
> >> Don't use BUFFER_LOCK_SHARE -- use BT_READ, as the existing
> >> nbtree LockBuffer() callers do. You're inconsistent about that
> >> in V3.
> >
> > I agree with you. It looks the only point where it is used.
> 
> OK:
> 
> https://github.com/kgrittn/postgres/commit/76118b58be819ed5e68569c926d0222bc41640ea
> 
> > Addition to that, the commnet just above the point methioned
> > above quizes me.
> >
> >>    /* XXX: Can walking left be lighter on the locking and pins? */
> >>        if (BTScanPosIsPinned(so->currPos))
> >>                LockBuffer(so->currPos.buf, BUFFER_LOCK_SHARE);
> >>        else
> >>                so->currPos.buf = _bt_getbuf(rel, so->currPos.currPage, BT_READ);
> >
> > I'm happy if I could read the meaming of the comment more
> > clearly. I understand that it says that you want to remove the
> > locking (and pinning), but can't now because the simultaneous
> > splitting of the left page would break something. I'd like to see
> > it clearer even for me either I am correct or not..
> 
> Does this clear it up?:
> 
> https://github.com/kgrittn/postgres/commit/22066fc161a092e800e4c1e853136c4513f8771b
Thank you for the labor. It also looks perfect.
> Since there are no changes that would affect the compiled code
> here, I'm not posting a new patch yet.  I'll do that once things
> seem to have settled down a bit more.
-- 
Kyotaro Horiguchi
NTT Open Source Software Center
| Attachment | Content-Type | Size | 
|---|---|---|
| bt-nopin-v4.patch | text/x-patch | 34.1 KB | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Fabien COELHO | 2015-03-16 07:02:46 | Re: PATCH: pgbench - merging transaction logs | 
| Previous Message | Kouhei Kaigai | 2015-03-16 06:50:25 | Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) |