pgsql: Use more efficient hashtable for tidbitmap.c to speed up bitmap - Mailing list pgsql-committers

From Andres Freund
Subject pgsql: Use more efficient hashtable for tidbitmap.c to speed up bitmap
Date
Msg-id E1bvBn6-0002DG-7f@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Use more efficient hashtable for tidbitmap.c to speed up bitmap scans.

Use the new simplehash.h to speed up tidbitmap.c uses. For bitmap scan
heavy queries speedups of over 100% have been measured. Both lossy and
exact scans benefit, but the wins are bigger for mostly exact scans.

The conversion is mostly trivial, except that tbm_lossify() now restarts
lossifying at the point it previously stopped. Otherwise the hash table
becomes unbalanced because the scan in done in hash-order, leaving the
end of the hashtable more densely filled then the beginning. That caused
performance issues with dynahash as well, but due to the open chaining
they were less pronounced than with the linear adressing from
simplehash.h.

Reviewed-By: Tomas Vondra
Discussion: <20160727004333.r3e2k2y6fvk2ntup@alap3.anarazel.de>

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/75ae538bc3168bf44475240d4e0487ee2f3bb376

Modified Files
--------------
src/backend/nodes/tidbitmap.c | 169 ++++++++++++++++++++++++------------------
1 file changed, 97 insertions(+), 72 deletions(-)


pgsql-committers by date:

Previous
From: Tatsuo Ishii
Date:
Subject: pgsql: Remove spurious word.
Next
From: Andres Freund
Date:
Subject: pgsql: Add likely/unlikely() branch hint macros.