From: | Zhihong Yu <zyu(at)yugabyte(dot)com> |
---|---|
To: | Justin Pryzby <pryzby(at)telsasoft(dot)com> |
Cc: | Nitin Jadhav <nitinjadhavpostgres(at)gmail(dot)com>, PostgreSQL Developers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Removed extra memory allocations from create_list_bounds |
Date: | 2021-05-16 17:26:20 |
Message-ID: | CALNJ-vS4g3QNmPe8WcgBmJQOzS0K_OAujW_1T0J2JXqpBQoBFw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sun, May 16, 2021 at 10:00 AM Justin Pryzby <pryzby(at)telsasoft(dot)com> wrote:
> On Sat, May 15, 2021 at 02:40:45PM +0530, Nitin Jadhav wrote:
> > While working on [1], I observed that extra memory is allocated in
> > [1]
> https://mail.google.com/mail/u/2/#search/multi+column+list/KtbxLxgZZTjRxNrBWvmHzDTHXCHLssSprg?compose=CllgCHrjDqKgWCBNMmLqhzKhmrvHhSRlRVZxPCVcLkLmFQwrccpTpqLNgbWqKkTkTFCHMtZjWnV
>
> This is a link to your gmail, not to anything public.
>
> If it's worth counting list elements in advance, then you can also
> allocate the
> PartitionListValue as a single chunk, rather than palloc in a loop.
> This may help large partition heirarchies.
>
> And the same thing in create_hash_bounds with hbounds.
>
> create_range_bounds() already doesn't call palloc in a loop. However, then
> there's an asymmetry in create_range_bounds, which is still takes a
> double-indirect pointer.
>
> I'm not able to detect that this is saving more than about ~1% less RAM, to
> create or select from 1000 partitions, probably because other data
> structures
> are using much more, and savings here are relatively small.
>
> I'm going to add to the next CF. You can add yourself as an author, and
> watch
> that the patch passes tests in cfbot.
> https://commitfest.postgresql.org/
> http://cfbot.cputube.org/
>
> Thanks,
> --
> Justin
>
Hi,
For 0001-Removed-extra-memory-allocations-from-create_list_bo.patch :
+static int
+get_non_null_count_list_bounds(PartitionBoundSpec **boundspecs, int nparts)
Since the function returns the total number of non null bound values,
should it be named get_non_null_list_bounds_count ?
It can also be named get_count_of_... but that's longer.
+ all_values = (PartitionListValue **)
+ palloc(ndatums * sizeof(PartitionListValue *));
The palloc() call would take place even if ndatums is 0. I think in that
case, palloc() doesn't need to be called.
Cheers
From | Date | Subject | |
---|---|---|---|
Next Message | Nitin Jadhav | 2021-05-16 18:22:41 | Re: Query about time zone patterns in to_char |
Previous Message | Tom Lane | 2021-05-16 17:04:15 | Re: Query about time zone patterns in to_char |