On 2013-11-27 19:24:35 -0300, Alvaro Herrera wrote:
> One other thought is that MultiXactIdIsRunning and GetMultiXactIdMembers
> are public functions, so this patch would represent an API change in
> 9.3. I doubt any external modules would be relying on these functions,
> but there's so many care and thought put into avoiding API changes on
> released versions that I'm nervous about doing it here. So I think we'd
> need to provide a compatibility shim to avoid that.
-0.5 for providing compatibility shims for this. There really doesn't
seem to be legitimate use for that api outside the guts of heapam.c
besides crude debugging hacks. So it seems like wasted effort.
> (I generally dislike to keep compatibility stuff forever, so I would
> provide this backward-compatible functions in 9.3 only. Anyone using it
> would have to fix the code and recompile for 9.4+. This means a #ifdef
> in code meant to work on top of both 9.3 and 9.4. Anyone opines
> otherwise?)
If at all, we definitely should only do it for 9.3.
> The other idea is to just not backpatch this.
I think backpatching is a good idea, I have seen GetMultiXactIdMembers()
+ slru code take up 80% cpu in strange workloads. But it possibly might
be a good idea to wait till after the next point release to give people
at least a minimal chance of catching problems.
> Other than that, this patch implements the optimization suggested here.
Great!
Greetings,
Andres Freund
-- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services