aboutsummaryrefslogtreecommitdiff
path: root/src/tutorial/complex.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2017-05-12 18:30:02 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2017-05-12 18:30:02 -0400
commit8a7506e048e3cc40db246526be66a256397a4920 (patch)
tree338172dbe2b09ef1ce52105670db107b040d4a59 /src/tutorial/complex.c
parent3569a9a73e6aa7d5b813115cc0a28969592bdc1f (diff)
downloadpostgresql-8a7506e048e3cc40db246526be66a256397a4920.tar.gz
postgresql-8a7506e048e3cc40db246526be66a256397a4920.zip
Reduce initial size of RelfilenodeMapHash.
A test case provided by Mathieu Fenniak shows that hash_seq_search'ing this hashtable can consume a very significant amount of overhead during logical decoding, which triggers frequent cache invalidation. Testing suggests that the actual population of the hashtable is often no more than a few dozen entries, so we can cut the overhead just by dropping the initial number of buckets down from 1024 --- I chose to cut it to 64. (In situations where we do have a significant number of entries, we shouldn't get any real penalty from doing this, as the dynahash.c code will resize the hashtable automatically.) This gives a further factor-of-two savings in Mathieu's test case. That may be overly optimistic for real-world benefit, as real cases may have larger average table populations, but it's hard to see it turning into a net negative for any workload. Back-patch to 9.4 where relfilenodemap.c was introduced. Discussion: https://postgr.es/m/CAHoiPjzea6N0zuCi=+f9v_j94nfsy6y8SU7-=bp4=7qw6_i=Rg@mail.gmail.com
Diffstat (limited to 'src/tutorial/complex.c')
0 files changed, 0 insertions, 0 deletions