On Sat, May 3, 2025 at 1:18 AM Bruce Momjian <br...@momjian.us> wrote:
> On Fri, May  2, 2025 at 01:00:57PM +0900, Amit Langote wrote:
> > 1. Speed up execution of cached plans by deferring locks on partitions
> > subject to pruning (Amit Langote)
> > (bb3ec16e1, d47cbf474, cbc127917, 525392d57)
> >
> > 2. Speed up child EquivalenceMember lookup in planner (Yuya Watari,
> > David Rowley)
> > (d69d45a5a)
> >
> > 3. Speed up derived clause lookup in EquivalenceClass (Ashutosh Bapat)
> > (88f55bc97)
> >
> > Alternatively, 2 and 3 can be combined as:
> >
> > 2. Speed up partition planning by improving EquivalenceClass lookups
> > (Yuya Watari, David Rowley, Ashutosh Bapat)
> >
> > I think 1 should go under Partitioning, which I see is currently missing.
> >
> > Any thoughts, David?
> >
> > Can work on a patch if you'd like.
>
> So, a few things.  First, these set of commits was in a group of 10 that
> I added since there have been complaints in the past that optimizer
> improvements were not listed and therefore patch authors were not given
> sufficient credit.  That means the 209 item count for PG 18 is 10 higher
> than my normal filtering would produce.
>
> Second, looking at the items, these are a case of "X is faster", which
> we don't normally mention in the release notes.  We normally mention
> "faster" when it is so much faster that use cases which were not
> possible before might be possible now, so it is recommended to retest.
> That is what I saw this grouped item as, whereas I don't think the
> individual items meet that criteria.
>
> Also, I didn't see enough partition items to warrant a separate
> partition section, and we didn't have one in PG 17 either.  We could
> pull all the partition items from the sections they are already in, but
> they seem more natural in the sections they are in.
>
> I don't think most people would know what EquivalenceMember is, and even
> if they did, would they be able to connect it to an SQL query?

Thanks for splitting these (cf847d634). I think the text for the
locking item should mention “during execution,” as David also
suggested. Again, I don’t think this change belongs under Optimizer
since it doesn’t really affect the planner -- it’s mainly an executor
improvement. Maybe the General Performance section is a better fit.

Also, just to clarify why the individual items are meaningful
performance improvements:

* Locking change: Executing cached plans involving hundreds or
thousands of partitions was bottlenecked by locking; with this change,
execution is now roughly 20x faster with 1000 partitions.

* Planning time improvements: Planning certain commonly used queries
against partitioned tables when they don’t use partition pruning is
now roughly 20x faster with 1000 partitions.

-- 
Thanks, Amit Langote


Reply via email to