Обсуждение: Proposal : Use bump memory context for temp buffers

Поиск
Список
Период
Сортировка

Proposal : Use bump memory context for temp buffers

От
Daniil Davydov
Дата:
Hi,

Commit [1] introduced a new memory context suitable for situations when we
should allocate a large amount of memory with no need to free or reallocate it.

I think that it will be useful for temp buffers :
1) We allocate them lazily and never try to free them.
2) Some users are very active in working with temporary tables, and as
a result,
they set large values for the "temp_buffers" parameter (several gigabytes).

Thus, the use case for temp buffers seems to perfectly fit for bump
memory context.
What do you think?

[1] 29f6a959cfd8ffa7d6db2c0629439c5329e2853e

--
Best regards,
Daniil Davydov

Вложения

Re: Proposal : Use bump memory context for temp buffers

От
Heikki Linnakangas
Дата:
On 16/12/2025 15:05, Daniil Davydov wrote:
> Hi,
> 
> Commit [1] introduced a new memory context suitable for situations when we
> should allocate a large amount of memory with no need to free or reallocate it.
> 
> I think that it will be useful for temp buffers :
> 1) We allocate them lazily and never try to free them.
> 2) Some users are very active in working with temporary tables, and as
> a result,
> they set large values for the "temp_buffers" parameter (several gigabytes).
> 
> Thus, the use case for temp buffers seems to perfectly fit for bump
> memory context.
> What do you think?

It makes no difference. The bump memory context is useful if you perform 
a lot of small allocations, because it skips the overhead of the chunk 
headers. In LocalBufferContext, we only ever make one allocation.

- Heikki




Re: Proposal : Use bump memory context for temp buffers

От
Daniil Davydov
Дата:
Hi,

On Tue, Dec 16, 2025 at 8:51 PM Heikki Linnakangas <hlinnaka@iki.fi> wrote:
>
> On 16/12/2025 15:05, Daniil Davydov wrote:
> > I think that it will be useful for temp buffers :
> > 1) We allocate them lazily and never try to free them.
> > 2) Some users are very active in working with temporary tables, and as
> > a result,
> > they set large values for the "temp_buffers" parameter (several gigabytes).
>
> It makes no difference. The bump memory context is useful if you perform
> a lot of small allocations, because it skips the overhead of the chunk
> headers. In LocalBufferContext, we only ever make one allocation.
>

Thanks for the explanation!

Actually, we allocate temp buffers gradually by memory chunks with
increasing size. So if temp buffers are pretty big, we must to do about 20
allocations.

I 100% agree that the amount of saved memory will be very-very low
compared to the size of the temp buffers. When I wrote "perfectly fit for bump
memory context" I meant design rather than the performance increasing.

--
Best regards,
Daniil Davydov