Re: Unnecessary locks for partitioned tables

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: n(dot)kobzarev(at)aeronavigator(dot)ru
Cc: "'Laurenz Albe'" <laurenz(dot)albe(at)cybertec(dot)at>, pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Unnecessary locks for partitioned tables
Date: 2022-11-09 14:29:35
Message-ID: 3968476.1668004175@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

<n(dot)kobzarev(at)aeronavigator(dot)ru> writes:
> Oh, I did not explicitly write that, in case of custom plan (first attempts or with force_custom_plan) database holds only a couple of locks! Why in this case it is sufficient to lock only one partition and parent table ?

Because partition routing is done at planning time in that case, based
on the actual values of the plan's parameters. A generic plan
doesn't have the parameter values available, so it has to build
plan nodes for every partition that could conceivably be accessed.
So for queries of this kind (ie point queries against heavily partitioned
tables) the generic plan is pretty much always going to lose. That
doesn't bother me enormously --- there are other query patterns
with similar behavior.

If you know that your queries always need custom plans, I question
the value of using PREPARE at all.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message n.kobzarev 2022-11-09 15:11:01 RE: Unnecessary locks for partitioned tables
Previous Message n.kobzarev 2022-11-09 13:40:01 RE: Unnecessary locks for partitioned tables