On 3/17/23 09:18, Jehan-Guillaume de Rorthais wrote: > Hi there, > > On Fri, 10 Mar 2023 19:51:14 +0100 > Jehan-Guillaume de Rorthais <j...@dalibo.com> wrote: > >>> So I guess the best thing would be to go through these threads, see what >>> the status is, restart the discussion and propose what to do. If you do >>> that, I'm happy to rebase the patches, and maybe see if I could improve >>> them in some way. >> >> [...] >> >>> I was hoping we'd solve this by the BNL, but if we didn't get that in 4 >>> years, maybe we shouldn't stall and get at least an imperfect stop-gap >>> solution ... >> >> Indeed. So, to sum-up: >> >> * Patch 1 could be rebased/applied/backpatched > > Would it help if I rebase Patch 1 ("move BufFile stuff into separate > context")? >
Yeah, I think this is something we'd want to do. It doesn't change the behavior, but it makes it easier to track the memory consumption etc. >> * Patch 2 is worth considering to backpatch > I'm not quite sure what exactly are the numbered patches, as some of the threads had a number of different patch ideas, and I'm not sure which one was/is the most promising one. IIRC there were two directions: a) "balancing" i.e. increasing work_mem to minimize the total memory consumption (best effort, but allowing exceeding work_mem) b) limiting the number of BufFiles, and combining data from "future" batches into a single file I think the spilling is "nicer" in that it actually enforces work_mem more strictly than (a), but we should probably spend a bit more time on the exact spilling strategy. I only really tried two trivial ideas, but maybe we can be smarter about allocating / sizing the files? Maybe instead of slices of constant size we could/should make them larger, similarly to what log-structured storage does. For example we might double the number of batches a file represents, so the first file would be for batch 1, the next one for batches 2+3, then 4+5+6+7, then 8-15, then 16-31, ... We should have some model calculating (i) amount of disk space we would need for the spilled files, and (ii) the amount of I/O we do when writing the data between temp files. > Same question. > >> * Patch 3 seemed withdrawn in favor of BNLJ >> * Patch 4 is waiting for some more review and has some TODO >> * discussion 5 worth few minutes to discuss before jumping on previous topics > > These other patches needs more discussions and hacking. They have a low > priority compare to other discussions and running commitfest. However, how can > avoid losing them in limbo again? > I think focusing on the backpatchability is not particularly good approach. It's probably be better to fist check if there's any hope of restarting the work on BNLJ, which seems like a "proper" solution for the future. It getting that soon (in PG17) is unlikely, let's revive the rebalance and/or spilling patches. Imperfect but better than nothing. And then in the end we can talk about if/what can be backpatched. FWIW I don't think there's a lot of rush, considering this is clearly a matter for PG17. So the summer CF at the earliest, people are going to be busy until then. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company