Adding description about the random_page_cost and parallel_leader_participation

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Adding description about the random_page_cost and parallel_leader_participation

PG Doc comments form
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/12/runtime-config-query.html
Description:

I recently have an observation that the combination of random_page_cost and
parallel_leader_participation can cause a performance regression. However,
based on the official website, it seems that these two configurations seem
not to have a very straight relationship.
   I run the PostgreSQL 11 on Ubuntu 18.04. When I create a database with
about 16MB and run a select query by pgbench. If I set the random_page_cost
as 4 and parallel_leader_participation is on, the average latency of select
query is about 72 ms for five clients. However, if we change the
random_page_cost to 1 or turn off the parallel_leader_participation, the
average latency is only 54ms. However, If I manually run the query on a
client, changing the value of random_page_cost doesn't change the
performance
   I check the workload and find that if the random_page_cost is 4 and
parallel_leader_participation is on, query planer would tend to choose Merge
gather join for select clause, which would require more memory to do
sorting. If the random_page_cost is 1 and parallel_leader_participation is
on, the query plan would choose nest loop, which requires less memory. I
guess this might be the root cause of performance regression.
   If my guess is true, I would suggest mentioning that the combination of
random_page_cost and paraller_leader_participation would cause the query to
use more memory in the official document
Reply | Threaded
Open this post in threaded view
|

Re: Adding description about the random_page_cost and parallel_leader_participation

Bruce Momjian
On Tue, Sep  1, 2020 at 05:26:50PM +0000, PG Doc comments form wrote:

> The following documentation comment has been logged on the website:
>
> Page: https://www.postgresql.org/docs/12/runtime-config-query.html
> Description:
>
> I recently have an observation that the combination of random_page_cost and
> parallel_leader_participation can cause a performance regression. However,
> based on the official website, it seems that these two configurations seem
> not to have a very straight relationship.
>    I run the PostgreSQL 11 on Ubuntu 18.04. When I create a database with
> about 16MB and run a select query by pgbench. If I set the random_page_cost
> as 4 and parallel_leader_participation is on, the average latency of select
> query is about 72 ms for five clients. However, if we change the
> random_page_cost to 1 or turn off the parallel_leader_participation, the
> average latency is only 54ms. However, If I manually run the query on a
> client, changing the value of random_page_cost doesn't change the
> performance
>    I check the workload and find that if the random_page_cost is 4 and
> parallel_leader_participation is on, query planer would tend to choose Merge
> gather join for select clause, which would require more memory to do
> sorting. If the random_page_cost is 1 and parallel_leader_participation is
> on, the query plan would choose nest loop, which requires less memory. I
> guess this might be the root cause of performance regression.
>    If my guess is true, I would suggest mentioning that the combination of
> random_page_cost and paraller_leader_participation would cause the query to
> use more memory in the official document

There are a lot of interactions between settings, and mentioning all of
them would be impossible.  I suggest you ask this on our performance
email list, and then you can get some ideas on the caues of this.

--
  Bruce Momjian  <[hidden email]>        https://momjian.us
  EnterpriseDB                             https://enterprisedb.com

  The usefulness of a cup is in its emptiness, Bruce Lee