Modify AtEOXact_CatCache and AtEOXact_RelationCache to assume that the
Tom Lane <tgl@sss.pgh.pa.us>
Modify AtEOXact_CatCache and AtEOXact_RelationCache to assume that the ResourceOwner mechanism already released all reference counts for the cache entries; therefore, we do not need to scan the catcache or relcache at transaction end, unless we want to do it as a debugging crosscheck. Do the crosscheck only in Assert mode. This is the same logic we had previously installed in AtEOXact_Buffers to avoid overhead with large numbers of shared buffers. I thought it'd be a good idea to do it here too, in view of Kari Lavikka's recent report showing a real-world case where AtEOXact_CatCache is taking a significant fraction of runtime.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/access/transam/xact.c | modified | +15 −1 |
| src/backend/utils/cache/catcache.c | modified | +136 −126 |
| src/backend/utils/cache/relcache.c | modified | +52 −53 |
| src/backend/utils/resowner/resowner.c | modified | +30 −56 |