Rework MultiXactId cache code

Alvaro Herrera <alvherre@alvh.no-ip.org>

Commit: d881dd6233f4eec6404f003bb08312e9e650e0e2
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: 2013-12-13T20:16:25Z
Releases: 9.4.0
Rework MultiXactId cache code

The original performs too poorly; in some scenarios it shows way too
high while profiling.  Try to make it a bit smarter to avoid excessive
cosst.  In particular, make it have a maximum size, and have entries be
sorted in LRU order; once the max size is reached, evict the oldest
entry to avoid it from growing too large.

Per complaint from Andres Freund in connection with new tuple freezing
code.

Files

PathChange+/−
src/backend/access/transam/multixact.c modified +42 −10