We're running out of procedure cache and from what I can tell, this happens as MEMC_SCOMPILE_1, shown by monProcedureCacheMemoryUsage table, grows to extremely high amount (over 6Gb).
I'm looking at the monProcedureCacheMemoryUsage and monProcedureCacheModuleUsage and I was expecting the totals for Module to match each other. But they don't.
I run this
select ModuleID, sum(Active) Active
into #memusage
from master..monProcedureCacheMemoryUsage
group by ModuleID
order by ModuleID
select mod.ModuleID, mod.ModuleName, mod.Active ModActive, mem.Active MemActive
from #modusage mod, #memusage mem where mod.ModuleID = mem.ModuleID
and get
ModuleID ModuleName ModActive MemActive
----------- ------------------------------ ----------- -----------
1 Parser 6 6
2 Utilities 9 16
4 Optimizer 0 0
5 Execution 3512 2097003
6 Access 0 0
7 Backup 0 0
8 Recovery 0 0
9 Replication 55 55
10 Procedural Objects 2022359 7106
11 Sort 5 5
12 HK GC 20 20
14 BLOB Management 0 0
15 Partition Conditions 737 830
16 Pdes Local HashTab 9 9
17 Statement Cache 80192 6184
18 CIS 4 4
19 Frame Management 8 8
21 Network 0 0
22 Procmem Control 5850 5850
23 Data change 633 633
26 Multiple Temporary Database 4 4
Many Modules do match but some (especially the large ones dont). When we run out of procedures cache we have, Module 10 in module usage showing over 3,000,000 and Module 5 of memory usage showing over 3,000,000.
Should the totals in the 2 tables match ?
If not why not ?
Do other people get the same results ?
I've seem some bug fixes in 15.7 SP136 - is this a symptom of these issues ?
Thanks
Mike