Patch: New GUC prepared_statement_limit to limit memory used byprepared statements - Mailing list pgsql-hackers

From Daniel Migowski
Subject Patch: New GUC prepared_statement_limit to limit memory used byprepared statements
Date
Msg-id ed51c14c-b3ff-5e2e-962c-69ac3ccb2c07@ikoffice.de
Whole thread Raw
Responses Re: Patch: New GUC prepared_statement_limit to limit memory used byprepared statements  (Ibrar Ahmed <ibrar.ahmad@gmail.com>)
List 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@Konstantin: This patch also includes the CachedPlanMemoryUsage 
function you like, maybe you like the review the patch for me?




Attachment

pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: default_table_access_method is not in sample config file
Next
From: Bruce Momjian
Date:
Subject: Re: [Proposal] Table-level Transparent Data Encryption (TDE) and KeyManagement Service (KMS)