Optimizing GetConflictingVirtualXIDs()
Optimizing GetConflictingVirtualXIDs()
От:
Simon Riggs <simon@2ndQuadrant.com>
Дата:
Optimize GetConflictingVirtualXIDs() in roughly the same manner we optimize TransactionIdIsInProgress(). Views? -- Simon Riggs www.2ndQuadrant.com
Re: Optimizing GetConflictingVirtualXIDs()
От:
Simon Riggs <simon@2ndQuadrant.com>
Дата:
On Sun, 2010-02-14 at 17:06 +0000, Greg Stark wrote: > On Sun, Feb 14, 2010 at 2:59 PM, Simon Riggs wrote: > > Optimize GetConflictingVirtualXIDs() in roughly the same manner we > > optimize TransactionIdIsInProgress(). > > > > Views? > > EINSUFFICIENTEXPLANATION :) ...I like that error code. The patch adds a calculation of RecentGlobalXmin each time it accesses the proc array to derive conflicts. It then uses the derived value to provide a fast-path out if a potential snapshot conflict arrives that we already know will not conflict with any backends. The purpose of this is to reduce the number of scans of the procarray and improve the performance of the startup process. The mechanism and purpose is the same as the first check in TransactionIdIsInProgress(). -- Simon Riggs www.2ndQuadrant.com
Re: Optimizing GetConflictingVirtualXIDs()
От:
Tom Lane <tgl@sss.pgh.pa.us>
Дата:
Simon Riggs writes: > On Sun, 2010-02-14 at 17:06 +0000, Greg Stark wrote: >> EINSUFFICIENTEXPLANATION :) > ...I like that error code. I think more EINSUFFICIENTCOMMENTS. The patch should also add a comment to the function, along the lines of "While we have the lock, also update RecentGlobalXmin, so that we will have as up-to-date a value as possible for next time". You've also failed to document the meaning or purpose of the added output parameter. regards, tom lane
Re: Optimizing GetConflictingVirtualXIDs()
От:
Greg Stark <gsstark@mit.edu>
Дата:
On Sun, Feb 14, 2010 at 2:59 PM, Simon Riggs wrote: > Optimize GetConflictingVirtualXIDs() in roughly the same manner we > optimize TransactionIdIsInProgress(). > > Views? EINSUFFICIENTEXPLANATION :) -- greg