Planning & executionsenior🔒 Pro concept

HashAggregate spill to disk and hash_mem_multiplier (work_mem * multiplier ceiling)

Simple terms

A GROUP BY builds a hash table with one entry per group and holds it in memory. Memory has a budget. Outgrow it and Postgres doesn't fail, and it doesn't degrade gently, it starts writing the newer groups out to temporary files and finishing them in later passes. EXPLAIN tells you when that happened: extra batches, and disk usage on the HashAggregate node. The answer is still correct. It just did a great deal more I/O to get there.

You might be asked

How does HashAggregate decide it has run out of memory, and what is hash_mem_multiplier? Walk me through what 'Batches' and 'Disk Usage' mean in an EXPLAIN ANALYZE HashAggregate node, and why a GROUP BY that was fine in PostgreSQL 11 can behave very differently in 13+.

Topicexecutor / aggregation / memory management
PostgreSQL14, 15, 16, 17, 18
Tools usedDocker pgi17 (PostgreSQL 17.10), EXPLAIN (ANALYZE), work_mem / hash_mem_multiplier GUCs, source-cache @REL_17_10 (nodeAgg.c, nodeHash.c)
Last reviewed2026-06-19

Pro concept

Full answer and evidence depth sit behind Pro

You have the question and a plain-English lead. Pro unlocks the short answer, what the docs say, what the code does, the labeled lab evidence or reproduction protocol, how to use it under pressure, and the references.

ProFull answer + evidence depth

Unlock the full breakdown for HashAggregate spill to disk and hash_mem_multiplier (work_mem * multiplier ceiling)

You have the interview question and a plain-English lead. Pro opens the short answer, the manual walkthrough, the source decode, and a 1-line evidence section that states whether it is raw output, a captured run summary, or a protocol to run yourself, plus how to use it under pressure.
  • How you'd answer it, the full senior-level short answer
  • What the docs say, the manual's actual wording, with the citations
  • What the code does, the mechanism decoded from PostgreSQL's own source at a pinned tag
  • Proof from a real run, labeled as raw output, a captured run summary, or a run-it-yourself protocol
  • Using it under pressure, the situation, the call you'd make, what goes wrong, and what people get wrong
  • Version notes, what changed across PostgreSQL releases

Card required. Cancel before day 7 and you are not charged.

Compare plans

How this was verified

The open teaser is the question and a plain-English lead. The short answer, the manual walkthrough, the source decode, the lab evidence, and how to use it under pressure unlock with Pro. Evidence is labeled as raw output, a captured run summary, or a run-it-yourself protocol.