1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-02 09:02:37 +03:00

I've attached a patch which implements Bob Jenkin's hash function for

PostgreSQL. This hash function replaces the one used by hash indexes and
the catalog cache. Hash joins use a different, relatively poor-quality
hash function, but I'll fix that later.

As suggested by Tom Lane, this patch also changes the size of the fixed
hash table used by the catalog cache to be a power-of-2 (instead of a
prime: I chose 256 instead of 257). This allows the catcache to lookup
hash buckets using a simple bitmask. This should improve the performance
of the catalog cache slightly, since the previous method (modulo a
prime) was slow.

In my tests, this improves the performance of hash indexes by between 4%
and 8%; the performance when using btree indexes or seqscans is
basically unchanged.

Neil Conway <neilconway@rogers.com>
This commit is contained in:
Bruce Momjian
2002-03-06 20:49:46 +00:00
parent 5b5cef9abd
commit 7ab7467318
10 changed files with 124 additions and 94 deletions

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
*
* $Id: nodeHash.c,v 1.60 2001/10/25 05:49:28 momjian Exp $
* $Id: nodeHash.c,v 1.61 2002/03/06 20:49:44 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -115,8 +115,7 @@ ExecInitHash(Hash *node, EState *estate, Plan *parent)
HashState *hashstate;
Plan *outerPlan;
SO1_printf("ExecInitHash: %s\n",
"initializing hash node");
SO_printf("ExecInitHash: initializing hash node\n");
/*
* assign the node's execution state