Re: GSoC on WAL-logging hash indexes - Mailing list pgsql-hackers

From Jeff Janes
Subject Re: GSoC on WAL-logging hash indexes
Date
Msg-id CAMkU=1xinHK1xSOHqNKXQb1h1pBoshYnxnwBQZOMKWzyVGNwsg@mail.gmail.com
Whole thread Raw
In response to Re: GSoC on WAL-logging hash indexes  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: GSoC on WAL-logging hash indexes  (Robert Haas <robertmhaas@gmail.com>)
List pgsql-hackers
On Thu, Mar 6, 2014 at 11:34 AM, Robert Haas <robertmhaas@gmail.com> wrote:

Putting the split-in-progress flag in the new bucket's primary page
makes a lot of sense.  I don't have any problem with dumping the rest
of it for a first cut if we have a different long-term plan for how to
improve concurrency, but I don't see much point in going to a lot of
work to implement a system for WAL logging if we're going to end up
having to afterwards throw it out and start from scratch to get rid of
the heavyweight locks - and it's not obvious to me how what you have
here could be extended to do that.

+1   I don't think we have to improve concurrency at the same time as WAL logging, but we at least have to implement WAL logging in a way that doesn't foreclose future improvements to concurrency.

I've been tempted to implement a new type of hash index that allows both WAL and high concurrency, simply by disallowing bucket splits.  At the index creation time you use a storage parameter to specify the number of buckets, and that is that. If you mis-planned, build a new index with more buckets, possibly concurrently, and drop the too-small one.

I think it would be easier to add bucket splitting to something like this than it would be to add WAL logging and concurrency to what we already have--mostly because I think that route would be more amenable to incremental programming efforts, and also because if people had an actually useful hash index type they would use it and see that it worked well (assuming of course that it does work well), and then be motivated to improve it.

If this could be done as an extension I would just go (attempt to) do it.  But since WAL isn't pluggable, it can't go in as an extension.

Cheers,

Jeff

pgsql-hackers by date:

Previous
From: Pavel Stehule
Date:
Subject: Re: Fwd: patch: make_timestamp function
Next
From: Daniele Varrazzo
Date:
Subject: Re: jsonb and nested hstore