Remove the limit on the number of entries allowed in catcaches, and

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 8b9bc234ad43dfa788bde40ebf12e94f16556b7f
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2006-06-15T02:08:09Z
Releases: 8.2.0
Remove the limit on the number of entries allowed in catcaches, and
remove the infrastructure needed to enforce the limit, ie, the global
LRU list of cache entries.  On small-to-middling databases this wins
because maintaining the LRU list is a waste of time.  On large databases
this wins because it's better to keep more cache entries (we assume
such users can afford to use some more per-backend memory than was
contemplated in the Berkeley-era catcache design).  This provides a
noticeable improvement in the speed of psql \d on a 10000-table
database, though it doesn't make it instantaneous.

While at it, use per-catcache settings for the number of hash buckets
per catcache, rather than the former one-size-fits-all value.  It's a
bit silly to be using the same number of hash buckets for, eg, pg_am
and pg_attribute.  The specific values I used might need some tuning,
but they seem to be in the right ballpark based on CATCACHE_STATS
results from the standard regression tests.

Files

PathChange+/−
src/backend/utils/cache/catcache.c modified +51 −146
src/backend/utils/cache/syscache.c modified +122 −47
src/include/utils/catcache.h modified +8 −13