On Fri, Jul 10, 2020 at 10:47 AM Tom Lane <t...@sss.pgh.pa.us> wrote: > I looked over Peter's patch in [1], and it seems generally pretty > sane to me, though I concur with the idea that it'd be better to > define the GUC as a multiplier for work_mem. (For one thing, we could > then easily limit it to be at least 1.0, ensuring sanity; also, if > work_mem does eventually become more dynamic than it is now, we might > still be able to salvage this knob as something useful. Or if not, > we just rip it out.) So my vote is for moving in that direction.
Cool. I agree that it makes sense to constrain the effective value to be at least work_mem in all cases. With that in mind, I propose that this new GUC have the following characteristics: * It should be named "hash_mem_multiplier", a floating point GUC (somewhat like bgwriter_lru_multiplier). * The default value is 2.0. * The minimum allowable value is 1.0, to protect users from accidentally giving less memory to hash-based nodes. * The maximum allowable value is 100.0, to protect users from accidentally setting hash_mem_multiplier to a value intended to work like a work_mem-style KB value (you can't provide an absolute value like that directly). This maximum is absurdly high. I think that it's possible that a small number of users will find it useful to set the value of hash_mem_multiplier as high as 5.0. That is a very aggressive value, but one that could still make sense with certain workloads. Thoughts? -- Peter Geoghegan