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 ,如果數值比較大的話是太小,如果為零的話就是理想情況。