RE: thousands of CachedPlan entry per backend

2023-06-02 Thread James Pang (chaolpan)
these lines about "SPI Plan" are these PL/PGSQL functions related through 
SPI_prepare plan entry, right?


SPI Plan: 1024 total in 1 blocks; 600 free (0 chunks); 424 used

CachedPlan: 2048 total in 2 blocks; 304 free (1 chunks); 1744 used: xxx

CachedPlanSource: 2048 total in 2 blocks; 200 free (0 chunks); 1848 used: 
xxx

  CachedPlanQuery: 2048 total in 2 blocks; 704 free (0 chunks); 1344 used

From: Pavel Stehule 
Sent: Friday, June 2, 2023 12:57 PM
To: James Pang (chaolpan) 
Cc: Laurenz Albe ; 
pgsql-performance@lists.postgresql.org
Subject: Re: thousands of CachedPlan entry per backend



pá 2. 6. 2023 v 3:45 odesílatel James Pang (chaolpan) 
mailto:chaol...@cisco.com>> napsal:
   these lines about "SPI Plan" are these PL/PGSQL functions related 
SPI_prepare plan entry, right?   Possible to set a GUC to max(cached plan) per 
backend ?

There is no limit for size of system cache. You can use pgbouncer that 
implicitly refresh session after 1 hour (and this limit can be reduced)

Regards

Pavel




SPI Plan: 1024 total in 1 blocks; 600 free (0 chunks); 424 used
CachedPlan: 2048 total in 2 blocks; 304 free (1 chunks); 1744 used: xxx
CachedPlanSource: 2048 total in 2 blocks; 200 free (0 chunks); 1848 used: 
xxx
  CachedPlanQuery: 2048 total in 2 blocks; 704 free (0 chunks); 1344 used

Thanks,

James

-Original Message-
From: Laurenz Albe mailto:laurenz.a...@cybertec.at>>
Sent: Thursday, June 1, 2023 8:48 PM
To: James Pang (chaolpan) mailto:chaol...@cisco.com>>; 
Pavel Stehule mailto:pavel.steh...@gmail.com>>
Cc: 
pgsql-performance@lists.postgresql.org
Subject: Re: thousands of CachedPlan entry per backend

On Thu, 2023-06-01 at 08:50 +, James Pang (chaolpan) wrote:
> we found thousands of cached plan , since JDBC driver only allow max
> 256 cached prepared statements, how backend cache so many sql plans.
> If we have one function, when application call that function will make
> backend to cache  every SQL statement plan in that function too?   and for 
> table triggers, have similar caching behavior ?

Yes, as long as the functions are written in PL/pgSQL.
It only affects static SQL, that is, nothing that is run with EXECUTE.

Yours,
Laurenz Albe


Re: thousands of CachedPlan entry per backend

2023-06-02 Thread Jeff Janes
On Thu, Jun 1, 2023 at 4:51 AM James Pang (chaolpan) 
wrote:

>   2) from  this line, we saw total 42 blocks ,215 chunks
> CacheMemoryContext: 8737352 total in 42 blocks; 1021944 free (215 chunks);
> 7715408 used,
>
>   But from sum of it’s child level entrys,  total sum(child lines)
> block ,trunks show much more than “CacheMemoryContext,  is expected to see
> that?
>

Yes, that is expected.  The parent context reports only its own direct
memory usage and blocks.  It does not include the sum of memory usage of
its child contexts.

Cheers,

Jeff

>