public inbox for [email protected]  
help / color / mirror / Atom feed
From: Achilleas Mantzios <[email protected]>
To: Mladen Marinović <[email protected]>
To: [email protected]
Subject: Re: Different execution plans in PG17 and pgBouncer...
Date: Mon, 5 May 2025 10:24:40 +0100
Message-ID: <[email protected]> (raw)
In-Reply-To: <CAHjkqPQFy2GnzRQHSkc8FXJdOYEV46cTQ9KjHXDUctCMHvveBw@mail.gmail.com>
References: <CAHjkqPQFy2GnzRQHSkc8FXJdOYEV46cTQ9KjHXDUctCMHvveBw@mail.gmail.com>


On 5/5/25 09:52, Mladen Marinović wrote:
> Hi,
>
> We recently migrated our production instances from PG11 to PG17. While 
> doing so we upgraded our pgBouncer instances from 1.12 to 1.24. As 
> everything worked on the test servers we pushed this to production a 
> few weeks ago. We did not notice any problems until a few days ago 
> (but the problems were here from the start). The main manifestation of 
> the problems is a service that runs a fixed query to get a backlog of 
> unprocessed data (limited to a 1000 rows). When testing the query 
> using pgAdmin connected directly to the database we get a result in 
> cca. 20 seconds. The same query runs for 2 hours when using pgBouncer 
> to connect to the same database.


That's a huge jump, I hope you guys did extensive testing of your app. 
In which language is your app written? If java, then define 
prepareThreshold=0 in your jdbc and set max_prepared_statements = 0 in 
pgbouncer.

How about search paths ? any difference on those between the two runs ? 
Do you set search_path in pgbouncer ? what is "cca." btw ?

>
> The more interesting part is that when we issue an explain of the same 
> query we get different plans. We did this a few seconds apart so there 
> should be no difference in collected statistics. We ruled out prepared 
> statements, as we suspected the generic plan might be the problem, but 
> it is not. Is there any pgBouncer or PG17 parameter that might be the 
> cause of this?


Does this spawn any connections (such as dblink) ? are there limits per 
user/db pool_size in pgbouncer ?

Pgbouncer, in contrast to its old friend PgPool-II is completely 
passive, just passes through SQL to the server as fast as possible as it 
can. But I am sure you know that. Good luck, keep us posted!

>
> Regards,
> Mladen Marinović

view thread (13+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: Different execution plans in PG17 and pgBouncer...
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox