Tom, One question that popped up in my head. hash_mem_multiplier is an upper-bound right: it doesn't reserve memory ahead of time correct? So there is no reason for me to spend undue amounts of time fine-tuning this parameter? If I have work_mem to 521MB, then I can set hash_mem_multiplier to 8 and should be OK. This doesn't mean that every query will consume 4GB of memory. Thank you, Laurent. -----Original Message----- From: Tom Lane <tgl@xxxxxxxxxxxxx> Sent: Sunday, July 25, 2021 14:08 To: ldh@xxxxxxxxxxxxxxxxxx Cc: Peter Geoghegan <pg@xxxxxxx>; David Rowley <dgrowleyml@xxxxxxxxx>; Justin Pryzby <pryzby@xxxxxxxxxxxxx>; pgsql-performance@xxxxxxxxxxxxxx Subject: Re: Big performance slowdown from 11.2 to 13.3 "ldh@xxxxxxxxxxxxxxxxxx" <ldh@xxxxxxxxxxxxxxxxxx> writes: > As a user of PG, we have taken pride in the last few years in tuning the heck out of the system and getting great performance compared to alternatives like SQLServer. The customers we work with typically have data centers and are overwhelmingly Windows shops: we won the battle to deploy a complex operational system on PG vs SQLServer, but Linux vs Windows was still a bridge too far for many. I am surprised that this limitation introduced after V11 hasn't caused issues elsewhere though. Maybe it has, but you're the first to report the problem, or at least the first to report it with enough detail to trace the cause. I've pushed a fix that removes the artificial restriction on work_mem times hash_mem_multiplier; it will be in next month's 13.4 release. You'll still need to increase hash_mem_multiplier to get satisfactory performance on your workload, but at least it'll be possible to do that. regards, tom lane