Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit055467d

Browse files
committed
Marginal hack to use a specialized hash function for dynahash hashtables
whose keys are OIDs. The only one that looks particularly performancecritical is the relcache hashtable, but as long as we've got the functionwe may as well use it wherever it's applicable.
1 parent162bd08 commit055467d

File tree

6 files changed

+28
-14
lines changed

6 files changed

+28
-14
lines changed

‎src/backend/postmaster/pgstat.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
*
1414
*Copyright (c) 2001-2005, PostgreSQL Global Development Group
1515
*
16-
*$PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.91 2005/04/14 20:03:25 tgl Exp $
16+
*$PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.92 2005/04/14 20:32:42 tgl Exp $
1717
* ----------
1818
*/
1919
#include"postgres.h"
@@ -2065,7 +2065,7 @@ pgstat_add_backend(PgStat_MsgHdr *msg)
20652065
memset(&hash_ctl,0,sizeof(hash_ctl));
20662066
hash_ctl.keysize=sizeof(Oid);
20672067
hash_ctl.entrysize=sizeof(PgStat_StatTabEntry);
2068-
hash_ctl.hash=tag_hash;
2068+
hash_ctl.hash=oid_hash;
20692069
dbentry->tables=hash_create("Per-database table",
20702070
PGSTAT_TAB_HASH_SIZE,
20712071
&hash_ctl,
@@ -2364,7 +2364,7 @@ pgstat_read_statsfile(HTAB **dbhash, Oid onlydb,
23642364
memset(&hash_ctl,0,sizeof(hash_ctl));
23652365
hash_ctl.keysize=sizeof(Oid);
23662366
hash_ctl.entrysize=sizeof(PgStat_StatDBEntry);
2367-
hash_ctl.hash=tag_hash;
2367+
hash_ctl.hash=oid_hash;
23682368
hash_ctl.hcxt=use_mcxt;
23692369
*dbhash=hash_create("Databases hash",PGSTAT_DB_HASH_SIZE,&hash_ctl,
23702370
HASH_ELEM |HASH_FUNCTION |mcxt_flags);
@@ -2453,7 +2453,7 @@ pgstat_read_statsfile(HTAB **dbhash, Oid onlydb,
24532453
memset(&hash_ctl,0,sizeof(hash_ctl));
24542454
hash_ctl.keysize=sizeof(Oid);
24552455
hash_ctl.entrysize=sizeof(PgStat_StatTabEntry);
2456-
hash_ctl.hash=tag_hash;
2456+
hash_ctl.hash=oid_hash;
24572457
hash_ctl.hcxt=use_mcxt;
24582458
dbentry->tables=hash_create("Per-database table",
24592459
PGSTAT_TAB_HASH_SIZE,
@@ -2888,7 +2888,7 @@ pgstat_recv_resetcounter(PgStat_MsgResetcounter *msg, int len)
28882888
memset(&hash_ctl,0,sizeof(hash_ctl));
28892889
hash_ctl.keysize=sizeof(Oid);
28902890
hash_ctl.entrysize=sizeof(PgStat_StatTabEntry);
2891-
hash_ctl.hash=tag_hash;
2891+
hash_ctl.hash=oid_hash;
28922892
dbentry->tables=hash_create("Per-database table",
28932893
PGSTAT_TAB_HASH_SIZE,
28942894
&hash_ctl,

‎src/backend/utils/cache/relcache.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.220 2005/04/14 20:03:26 tgl Exp $
11+
* $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.221 2005/04/14 20:32:43 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -1032,7 +1032,7 @@ LookupOpclassInfo(Oid operatorClassOid,
10321032
MemSet(&ctl,0,sizeof(ctl));
10331033
ctl.keysize=sizeof(Oid);
10341034
ctl.entrysize=sizeof(OpClassCacheEnt);
1035-
ctl.hash=tag_hash;
1035+
ctl.hash=oid_hash;
10361036
OpClassCache=hash_create("Operator class cache",64,
10371037
&ctl,HASH_ELEM |HASH_FUNCTION);
10381038
}
@@ -2151,7 +2151,7 @@ RelationCacheInitialize(void)
21512151
MemSet(&ctl,0,sizeof(ctl));
21522152
ctl.keysize=sizeof(Oid);
21532153
ctl.entrysize=sizeof(RelIdCacheEnt);
2154-
ctl.hash=tag_hash;
2154+
ctl.hash=oid_hash;
21552155
RelationIdCache=hash_create("Relcache by OID",INITRELCACHESIZE,
21562156
&ctl,HASH_ELEM |HASH_FUNCTION);
21572157

‎src/backend/utils/cache/typcache.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
* Portions Copyright (c) 1994, Regents of the University of California
3737
*
3838
* IDENTIFICATION
39-
* $PostgreSQL: pgsql/src/backend/utils/cache/typcache.c,v 1.12 2005/04/14 20:03:26 tgl Exp $
39+
* $PostgreSQL: pgsql/src/backend/utils/cache/typcache.c,v 1.13 2005/04/14 20:32:43 tgl Exp $
4040
*
4141
*-------------------------------------------------------------------------
4242
*/
@@ -123,7 +123,7 @@ lookup_type_cache(Oid type_id, int flags)
123123
MemSet(&ctl,0,sizeof(ctl));
124124
ctl.keysize=sizeof(Oid);
125125
ctl.entrysize=sizeof(TypeCacheEntry);
126-
ctl.hash=tag_hash;
126+
ctl.hash=oid_hash;
127127
TypeCacheHash=hash_create("Type information cache",64,
128128
&ctl,HASH_ELEM |HASH_FUNCTION);
129129
}

‎src/backend/utils/fmgr/fmgr.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.93 2005/03/31 22:46:16 tgl Exp $
11+
* $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.94 2005/04/14 20:32:43 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -509,7 +509,7 @@ record_C_func(HeapTuple procedureTuple,
509509
MemSet(&hash_ctl,0,sizeof(hash_ctl));
510510
hash_ctl.keysize=sizeof(Oid);
511511
hash_ctl.entrysize=sizeof(CFuncHashTabEntry);
512-
hash_ctl.hash=tag_hash;
512+
hash_ctl.hash=oid_hash;
513513
CFuncHash=hash_create("CFuncHash",
514514
100,
515515
&hash_ctl,

‎src/backend/utils/hash/hashfn.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
*
1111
* IDENTIFICATION
12-
* $PostgreSQL: pgsql/src/backend/utils/hash/hashfn.c,v 1.22 2004/12/31 22:01:37 pgsql Exp $
12+
* $PostgreSQL: pgsql/src/backend/utils/hash/hashfn.c,v 1.23 2005/04/14 20:32:43 tgl Exp $
1313
*
1414
*-------------------------------------------------------------------------
1515
*/
@@ -40,3 +40,16 @@ tag_hash(const void *key, Size keysize)
4040
returnDatumGetUInt32(hash_any((constunsignedchar*)key,
4141
(int)keysize));
4242
}
43+
44+
/*
45+
* oid_hash: hash function for keys that are OIDs
46+
*
47+
* (tag_hash works for this case too, but is slower)
48+
*/
49+
uint32
50+
oid_hash(constvoid*key,Sizekeysize)
51+
{
52+
Assert(keysize==sizeof(Oid));
53+
/* We don't actually bother to do anything to the OID value ... */
54+
return (uint32)*((constOid*)key);
55+
}

‎src/include/utils/hsearch.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $PostgreSQL: pgsql/src/include/utils/hsearch.h,v 1.34 2004/12/31 22:03:46 pgsql Exp $
10+
* $PostgreSQL: pgsql/src/include/utils/hsearch.h,v 1.35 2005/04/14 20:32:43 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -184,5 +184,6 @@ extern long hash_select_dirsize(long num_entries);
184184
*/
185185
externuint32string_hash(constvoid*key,Sizekeysize);
186186
externuint32tag_hash(constvoid*key,Sizekeysize);
187+
externuint32oid_hash(constvoid*key,Sizekeysize);
187188

188189
#endif/* HSEARCH_H */

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp