Re: Patch: New GUC prepared_statement_limit to limit memory used by prepared statements

From: Ibrar Ahmed <ibrar(dot)ahmad(at)gmail(dot)com>
To: Daniel Migowski <dmigowski(at)ikoffice(dot)de>
Cc: "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Konstantin Knizhnik <k(dot)knizhnik(at)postgrespro(dot)ru>
Subject: Re: Patch: New GUC prepared_statement_limit to limit memory used by prepared statements
Date: 2019-08-17 17:10:45
Message-ID: CALtqXTdLY1uHqifLWJzjKkod-X6GO-+JLFUgLPag+pO+xMWEmQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Aug 17, 2019 at 6:58 PM Daniel Migowski <dmigowski(at)ikoffice(dot)de>
wrote:

> Hello,
>
> attached you find a patch that adds a new GUC:
>

Quick questions before looking at the patch.

>
> prepared_statement_limit:
>
> - Do we have a consensus about the name of GUC? I don't think it is
the right name for that.

- Is this a WIP patch or the final patch? Because I can see TODO and
non-standard
comments in the patch.

> Specifies the maximum amount of memory used in each session to
> cache
> parsed-and-rewritten queries and execution plans. This affects
> the maximum memory
> a backend threads will reserve when many prepared statements
> are used.
> The default value of 0 disables this setting, but it is
> recommended to set this
> value to a bit lower than the maximum memory a backend worker
> thread should reserve
> permanently.
>
> If the GUC is configured after each save of a CachedPlanSource, or after
> creating a CachedPlan from it, the function
> EnforcePreparedStatementLimit is called now. It checks the mem usage of
> the existing saved CachedPlanSources and invalidates the query_list and
> the gplan if available until the memory limit is met again.
>
> CachedPlanSource are removed-and-tailadded in the saved_plan_list
> everytime GetCachedPlan is called on them so it can be used as a LRU list.
>
> I also reworked ResetPlanCache, PlanCacheRelCallback and
> PlanCacheObjectCallback a bit so when a CachedPlanSource is invalidated
> the query_list is not only marked as invalid but it is also fully
> released to free memory here.
>
> Regards,
> Daniel Migowski
>
> PS(at)Konstantin: This patch also includes the CachedPlanMemoryUsage
> function you like, maybe you like the review the patch for me?
>
>

--
Ibrar Ahmed

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2019-08-17 17:28:53 Re: POC: Cleaning up orphaned files using undo logs
Previous Message Stephen Frost 2019-08-17 17:09:07 Re: [Proposal] Table-level Transparent Data Encryption (TDE) and Key Management Service (KMS)