hash index concurrency - Mailing list pgsql-hackers

From Robert Haas
Subject hash index concurrency
Date
Msg-id CA+TgmoaF_tR81s1CtCBVhQjSxCS769hVBUnnOfvd_B7ZJB74=w@mail.gmail.com
Whole thread Raw
Responses Re: hash index concurrency
List pgsql-hackers
I ran a SELECT-only pgbench test today on the IBM POWER7 box with 64
concurrent clients and got roughly 305,000 tps.  Then, I created a
hash index on pgbench_accounts (aid), dropped the primary key, and
reran the test.  I got roughly 104,000 tps. 'perf -g -e cs' suggested
lock contention in _hash_first(), so I whacked out the calls to
_hash_getlock(rel, 0, HASH_SHARE) and _hash_droplock(rel, 0,
HASH_SHARE).  With that change, I got roughly 270,000 TPS.  Taking a
little further, I then changed the definition of USELOCKING() to 0,
effectively removing all the heavyweight page locks.  With that
change, I got 324,000 tps.  Also, with this change, the CPU is fully
saturated - about 77% user time, 23% system time.

I don't immediately have a proposal to deal with this, but it seems
that if we want good hash index performance under high concurrency, we
need to work a bit harder.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


pgsql-hackers by date:

Previous
From: Jim Nasby
Date:
Subject: Re: temporal support patch
Next
From: Sergey Koposov
Date:
Subject: slow dropping of tables, DropRelFileNodeBuffers, tas