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

From: Daniel Migowski <dmigowski(at)ikoffice(dot)de>
To: "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: Patch: New GUC prepared_statement_limit to limit memory used by prepared statements
Date: 2019-08-17 13:57:47
Message-ID: ed51c14c-b3ff-5e2e-962c-69ac3ccb2c07@ikoffice.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello,

attached you find a patch that adds a new GUC:

prepared_statement_limit:

        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?

Attachment Content-Type Size
limit_prep_statments_mem.patch text/plain 15.0 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2019-08-17 15:13:43 Re: [Proposal] Table-level Transparent Data Encryption (TDE) and Key Management Service (KMS)
Previous Message Michael Paquier 2019-08-17 13:07:22 Re: default_table_access_method is not in sample config file