Merge init and max size options on shmem hash tables
Heikki Linnakangas <heikki.linnakangas@iki.fi>
Author:
Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: 2026-04-03T23:40:20Z
Releases:
19 (unreleased)
Merge init and max size options on shmem hash tables Replace the separate init and max size options with a single size option. We didn't make much use of the feature, all callers except the ones in wait_event.c already used the same size for both, and the hash tables in wait_event.c are small so there's little harm in just allocating them to the max size. The only reason why you might want to not reserve the max size upfront is to make the memory available for other hash tables to grow beyond their max size. Letting hash tables grow much beyond their max size is bad for performance, however, because we cannot resize the directory, and we never had very much "wiggle room" to grow to anyway so you couldn't really rely on it. We recently marked the LOCK and PROCLOCK tables with HAS_FIXED_SIZE, so there's nothing left in core that would benefit from more unallocated shared memory. Reviewed-by: Tomas Vondra <tomas@vondra.me> Discussion: https://www.postgresql.org/message-id/01ab1d41-3eda-4705-8bbd-af898f5007f1@iki.fi
Files
| Path | Change | +/− |
|---|---|---|
| contrib/pg_stat_statements/pg_stat_statements.c | modified | +1 −1 |
| src/backend/storage/buffer/buf_table.c | modified | +1 −1 |
| src/backend/storage/ipc/shmem.c | modified | +4 −12 |
| src/backend/storage/lmgr/lock.c | modified | +0 −2 |
| src/backend/storage/lmgr/predicate.c | modified | +0 −3 |
| src/backend/utils/activity/wait_event.c | modified | +9 −13 |
| src/include/storage/shmem.h | modified | +1 −1 |
Discussion
- Shared hash table allocations 16 messages · 2026-03-27 → 2026-04-03