Re: Write Ahead Logging for Hash Indexes

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Stephen Frost <sfrost@snowman.net>, Amit Kapila <amit.kapila16@gmail.com>, Jesper Pedersen <jesper.pedersen@redhat.com>, Jeff Janes <jeff.janes@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2017-03-15T15:02:52Z
Lists: pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes:
> That theory seems inconsistent with how mdextend() works.  My
> understanding is that we zero-fill the new blocks before populating
> them with actual data precisely to avoid running out of disk space due
> to deferred allocation at the OS level.  If we don't care about
> failures due to deferred allocation at the OS level, we can rip that
> logic out and improve the performance of relation extension
> considerably.

See my reply to Stephen.  The fact that this fails to guarantee no
ENOSPC on COW filesystems doesn't mean that it's not worth doing on
other filesystems.  We're reducing the risk, not eliminating it,
but reducing risk is still a worthwhile activity.

			regards, tom lane


Commits

  1. Add a regression test for snapshot too old with hash indexes.

  2. hash: Add write-ahead logging support.

  3. Improve coding in _hash_addovflpage.

  4. Remove _hash_wrtbuf() in favor of calling MarkBufferDirty().

  5. Improve hash index bucket split behavior.