日期:2014-05-16  浏览次数:20487 次

使用dbcc memusage确定procedure cache size大小

1.在Sybase正常运行一段时间后(各procedure&trigger已经运行或大多数已经运行一遍后)使用dbcc?traceon(3604)(将信息输出到前台),dbcc?memusage来观看内存分布。

???2.得到输出信息分三个部分
????第一部分描述的是你的配置参数的大小。
????第二部分描述的是缓冲最多的几个和他的库及对象(Buffer?Cache?Memory,?Top?10:?)
????重点在第三部分.?(Procedure?Cache,?Top?20:?)这里可以看到server启动至今最消耗内存的20个procedure的情况。我们需要计算Size?of?plans:/Number?of?plans得到最大的那个就是最大的存储过程。

???3.将最大存储过程消耗的内存*最大并发用户数*1.25就可得到最大的procedure?cache?size了。


这里有几点要注意,需要库运行一段时间才有意义,原因上面已经说明。在有需要注意的就是top?20里面包含的最大的procedure?plan?size可能是系统存储过程,计算不要使用系统过程的大小来估算而需要使用用户过程计算。三是这个计算的值是最大值,如果内存紧张有可能造成浪费.并且可能更改或增加查询计划使该值不适用。所以需要使用sp_sysmon来观察'Procedure?Cache?Management'部分的Procedure?Reads?from?Disk?,如果数值比较大的话是太小,如果为零的话就是理想情况。