| From: | Andres Freund <andres(at)2ndquadrant(dot)com> |
|---|---|
| To: | pgsql-hackers(at)postgresql(dot)org |
| Subject: | Small catcache optimization |
| Date: | 2013-09-05 19:13:23 |
| Message-ID: | 20130905191323.GC490889@alap2.anarazel.de |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi,
Heikki's catcache rehashing stuff reminded me that I'd posted an
optimization to catcache (20121220153555(dot)GH4303(at)awork2(dot)anarazel(dot)de) some
time back which I didn't have energy to pursue at that point.
I've brushed the patch up a bit and verified it still gives be a
performance improvement. It's still about 2% in a readonly pgbench on my
elderly laptop.
There's basically two tricks in the patch:
1) Don't always copy the cache's ScanKey to the stack. Instead pass
an array of arguments around. That get's rid of a good amount of
memcpy()ing in the common, cached case.
2) If we have to memcpy() because we need to pass a ScanKey to
systable_*, copy only cache->cc_nkey * sizeof(ScanKeyData) instead of
always copying the maximum size.
I'd be nicer to get rid of the mostly copied HeapKeyTestArg, but I don't
immediately see how.
Greetings,
Andres Freund
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
| Attachment | Content-Type | Size |
|---|---|---|
| 0001-Improve-catalog-cache-lookup-performance.patch | text/x-patch | 10.8 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Kevin Grittner | 2013-09-05 19:14:16 | Re: Eliminating pg_catalog.pg_rewrite.ev_attr |
| Previous Message | Andres Freund | 2013-09-05 19:02:44 | Re: lcr v5 - introduction of InvalidCommandId |