postgresql/src/backend
Alvaro Herrera fb47de2be6 Separate multixact freezing parameters from xid's
Previously we were piggybacking on transaction ID parameters to freeze
multixacts; but since there isn't necessarily any relationship between
rates of Xid and multixact consumption, this turns out not to be a good
idea.

Therefore, we now have multixact-specific freezing parameters:

vacuum_multixact_freeze_min_age: when to remove multis as we come across
them in vacuum (default to 5 million, i.e. early in comparison to Xid's
default of 50 million)

vacuum_multixact_freeze_table_age: when to force whole-table scans
instead of scanning only the pages marked as not all visible in
visibility map (default to 150 million, same as for Xids).  Whichever of
both which reaches the 150 million mark earlier will cause a whole-table
scan.

autovacuum_multixact_freeze_max_age: when for cause emergency,
uninterruptible whole-table scans (default to 400 million, double as
that for Xids).  This means there shouldn't be more frequent emergency
vacuuming than previously, unless multixacts are being used very
rapidly.

Backpatch to 9.3 where multixacts were made to persist enough to require
freezing.  To avoid an ABI break in 9.3, VacuumStmt has a couple of
fields in an unnatural place, and StdRdOptions is split in two so that
the newly added fields can go at the end.

Patch by me, reviewed by Robert Haas, with additional input from Andres
Freund and Tom Lane.
2014-02-13 19:30:30 -03:00
..
access Separate multixact freezing parameters from xid's 2014-02-13 19:30:30 -03:00
bootstrap Fix possible crashes due to using elog/ereport too early in startup. 2014-01-11 16:35:30 -05:00
catalog Accept pg_upgraded tuples during multixact freezing 2014-01-10 18:03:18 -03:00
commands Separate multixact freezing parameters from xid's 2014-02-13 19:30:30 -03:00
executor Fix *-qualification of named parameters in SQL-language functions. 2014-02-03 14:46:54 -05:00
foreign Arrange to cache FdwRoutine structs in foreign tables' relcache entries. 2013-03-06 23:48:09 -05:00
lib Reset the binary heap in MergeAppend rescans. 2013-08-30 19:15:32 -04:00
libpq Clear retry flags properly in replacement OpenSSL sock_write function. 2013-12-05 12:48:31 -05:00
main Fix possible crashes due to using elog/ereport too early in startup. 2014-01-11 16:35:30 -05:00
nodes Separate multixact freezing parameters from xid's 2014-02-13 19:30:30 -03:00
optimizer Fix bogus handling of "postponed" lateral quals. 2014-01-30 14:51:19 -05:00
parser Separate multixact freezing parameters from xid's 2014-02-13 19:30:30 -03:00
po Translation updates 2013-12-02 00:09:43 -05:00
port Fix unsafe references to errno within error messaging logic. 2014-01-29 20:04:01 -05:00
postmaster Separate multixact freezing parameters from xid's 2014-02-13 19:30:30 -03:00
regex Fix regex match failures for backrefs combined with non-greedy quantifiers. 2013-07-18 21:22:43 -04:00
replication Fix some more bugs in signal handlers and process shutdown logic. 2014-02-01 16:21:30 -05:00
rewrite Fix breakage of MV column name list usage. 2013-11-04 14:45:18 -06:00
snowball Update copyrights for 2013 2013-01-01 17:15:01 -05:00
storage Clear MyProc and MyProcSignalState before they become invalid. 2014-01-31 21:34:44 -05:00
tcop Fix possible crashes due to using elog/ereport too early in startup. 2014-01-11 16:35:30 -05:00
tsearch Use memmove() instead of memcpy() for copying overlapping regions. 2014-02-10 09:59:49 +02:00
utils Separate multixact freezing parameters from xid's 2014-02-13 19:30:30 -03:00
.gitignore Add gitignore for mingw/cygwin build outputs 2011-06-09 18:11:47 +02:00
common.mk Call check_keywords.pl in maintainer-check 2012-02-27 13:53:12 +02:00
Makefile Move relpath() to libpgcommon 2013-02-21 22:46:17 -03:00
nls.mk Add libpgcommon to backend gettext source files 2013-10-21 06:20:05 -04:00