How much Procedure cache

To caculate how much procedure cache you need, there’s a set of calculations which can be performed;

The upper size = (Max number of concurrent users) * (Size of the largest plan) * 1.25

The lower size =(Total number of procedures) * (average size of query plan) * 1.25

To work out the largest query plan size execute the following query in the main user database;

select max(count(*)/8 +1)

from sysprocedures

group by id

And to find the average size use this;

select avg(count(*)/8+1)

from sysprocdures

group by id

To calculate the total number of stored procdures execute the following query;

select count(*)

from sysobjects

where type=”p”

Max number of concurrent users is found from the result of sp_configure “max number of users”

Say for example the results came out to be 21MB and 3MB a reasonable figure could be 6MB but obviously if you have 21MB for the procedure cache then that is ideal, this canbe achieved by increasing total memory so that 20 % of total cache is 6MB or by altering the percentage of procedure cache out of total cache.