Re: Hash Indexes
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Jeff Janes <jeff.janes@gmail.com>,
Jesper Pedersen <jesper.pedersen@redhat.com>, Mithun Cy <mithun.cy@enterprisedb.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2016-09-16T05:52:06Z
Lists: pgsql-hackers
On Thu, Sep 15, 2016 at 7:25 PM, Robert Haas <robertmhaas@gmail.com> wrote: > On Thu, Sep 15, 2016 at 2:13 AM, Amit Kapila <amit.kapila16@gmail.com> wrote: >> One other point, I would like to discuss is that currently, we have a >> concept for tracking active hash scans (hashscan.c) which I think is >> mainly to protect splits when the backend which is trying to split has >> some scan open. You can read "Other Notes" section of >> access/hash/README for further details. I think after this patch we >> don't need that mechanism for splits because we always retain a pin on >> bucket buffer till all the tuples are fetched or scan is finished >> which will defend against a split by our own backend which tries to >> ensure cleanup lock on bucket. > > Hmm, yeah. It seems like we can remove it. > >> However, we might need it for vacuum >> (hashbulkdelete), if we want to get rid of cleanup lock in vacuum, >> once we have a page-at-a-time scan mode implemented for hash indexes. >> If you agree with above analysis, then we can remove the checks for >> _hash_has_active_scan from both vacuum and split path and also remove >> corresponding code from hashbegin/end scan, but retain that hashscan.c >> for future improvements. > > Do you have a plan for that? I'd be inclined to just blow away > hashscan.c if we don't need it any more, unless you're pretty sure > it's going to get reused. It's not like we can't pull it back out of > git if we decide we want it back after all. > I do want to work on it, but it is always possible that due to some other work this might get delayed. Also, I think there is always a chance that while doing that work, we face some problem due to which we might not be able to use that optimization. So I will go with your suggestion of removing hashscan.c and it's usage for now and then if required we will pull it back. If nobody else thinks otherwise, I will update this in next patch version. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com
Commits
-
Remove _hash_wrtbuf() in favor of calling MarkBufferDirty().
- 25216c989384 10.0 landed
-
Fix race introduced by 6d46f4783efe457f74816a75173eb23ed8930020.
- 2f4193c3509a 10.0 cited
-
Improve hash index bucket split behavior.
- 6d46f4783efe 10.0 landed
-
Reduce pinning and buffer content locking for btree scans.
- 2ed5b87f96d4 9.5.0 cited