On Mon, Feb 20, 2017 at 6:02 PM, Simon Riggs <si...@2ndquadrant.com> wrote: > On 15 February 2017 at 19:15, Andres Freund <and...@anarazel.de> wrote: > >> I think I previously >> mentioned, even just removing the MyPgXact->xmin assignment in >> SnapshotResetXmin() is measurable performance wise and cache-hit ratio >> wise. > > Currently, we issue SnapshotResetXmin() pointlessly at end of xact, so > patch attached to remove that call, plus some comments to explain > that. This reduces the cause. > > Also, another patch to reduce the calls to SnapshotResetXmin() using a > simple heuristic to reduce the effects.
I think skip_SnapshotResetXmin_if_idle_timeout.v1.patch isn't a good idea, because it could have the surprising result that setting idle_in_transaction_timeout to a non-zero value makes bloat worse. I don't think users will like that. Regarding reduce_pgxact_access_AtEOXact.v1.patch, it took me a few minutes to figure out that the comment was referring to ProcArrayEndTransaction(), so it might be good to be more explicit about that if we go forward with this. Have you checked whether this patch makes any noticeable performance difference? It's sure surprising that we go to all of this trouble to clean things up in AtEOXact_Snapshot() when we've already nuked MyPgXact->xmin from orbit. (Instead of changing AtEOXact_Snapshot, should we think about removing the xid clear logic from ProcArrayEndTransaction and only doing it here, or would that be wrong-headed?) -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (email@example.com) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers