postgresql/src
Andres Freund db76b1efbb Allow SetHintBits() to succeed if the buffer's LSN is new enough.
Previously we only allowed SetHintBits() to succeed if the commit LSN of
the last transaction touching the page has already been flushed to
disk. We can't generally change the LSN of the page, because we don't
necessarily have the required locks on the page. But the required LSN
interlock does not mean the commit record has to be flushed immediately,
it just requires that the commit record will be flushed before the page is
written out. Therefore if the buffer LSN is newer than the commit LSN,
the hint bit can be safely set.

In a number of scenarios (e.g. pgbench) this noticeably increases the
number of hint bits are set. But more importantly it also keeps the
success rate up when flushing WAL less frequently. That was the original
reason for commit 4de82f7d7, which has negative performance consequences
in a number of scenarios. This will allow a followup commit to reduce
the flush rate.

Discussion: 20160118163908.GW10941@awork2.anarazel.de
2016-02-15 22:48:51 +01:00
..
backend Allow SetHintBits() to succeed if the buffer's LSN is new enough. 2016-02-15 22:48:51 +01:00
bin pg_upgrade: Add C comment about NextXID delimiter 2016-02-12 17:53:36 -05:00
common Fix typos in comments 2016-02-01 11:43:48 +01:00
include Correct Copyright year from 2015 to 2016 2016-02-15 13:19:35 -08:00
interfaces Make sure ecpg header files do not have a comment lasting several lines, one of 2016-02-01 13:21:00 +01:00
makefiles Fix typos in comments and doc 2016-01-28 16:47:36 +09:00
pl Remove no-longer-needed old-style check for incompatible plpythons. 2016-01-11 20:13:31 -05:00
port Fix order of arguments to va_start() 2016-01-07 20:32:49 -03:00
template Remove some remains from Alpha support removal 2015-10-29 16:40:14 -04:00
test Increase deadlock_timeout some more in the deadlock-hard isolation test. 2016-02-12 17:22:42 -05:00
timezone Update time zone data files to tzdata release 2016a. 2016-02-05 10:59:09 -05:00
tools Change the way that LWLocks for extensions are allocated. 2016-02-04 16:43:04 -05:00
tutorial Update copyright for 2016 2016-01-02 13:33:40 -05:00
.gitignore
bcc32.mak Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
DEVELOPERS Replace a couple of references to files that no longer exist in the source 2009-05-04 08:08:47 +00:00
Makefile Create libpgcommon, and move pg_malloc et al to it 2013-02-12 11:21:05 -03:00
Makefile.global.in Add support for systemd service notifications 2016-02-02 21:04:29 -05:00
Makefile.shlib AIX: Link TRANSFORM modules with their dependencies. 2015-07-15 21:00:26 -04:00
nls-global.mk Setup error context callback for transaction lock waits 2014-03-19 15:10:36 -03:00
win32.mak Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00