In Read Committed transactions we take snapshots much more frequently than transactions begin and commit. It would be help scalability if we didn't need to re-take a snapshot. That's only helpful if the chances of seeing the snapshot is relatively high.
Now that we have virtual transactions we may more frequently find ourselves taking identical snapshots. If we had a counter that incremented each time the main snapshot altered in a meaningful way we could set that atomically. We could then read this when we take a snapshot to see if it matches our existing snapshot; if so then drop the lock quickly and continue with what we already have. I can see some downsides to this as well as potential benefits: * we ping the counter across CPUs - yes, we will, but that's probably better than pinging the whole procarray * this relies upon the rate of change of snapshots - need to do the math to see how often this might apply Not sure yet myself, but it seems worth recording in case it spurs an idea from someone else. -- Simon Riggs 2ndQuadrant http://www.2ndQuadrant.com ---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster