2010-11-08 90 views
3

如果您在同一個SQL Server上運行多個數據庫,他們都爭取過程緩存?我想弄清楚的是,SQL Server如何確定保存過程緩存的時間?如果其他數據庫使用的內存會影響同一服務器上給定數據庫的過程緩存?SQL Server過程緩存

我發現,在我們的應用程序的頁面的一些初始負載,它是緩慢的,但一旦查詢cacced它顯然很快。只是不確定SQL Server保留過程緩存多久,以及其他DB是否會影響這段時間。

回答

4

緩存/編譯發生端到端

  • IIS會後不是20分鐘,默認情況下使用卸載。
  • .NET編譯到CLR
  • SQL編譯
  • 將數據加載到內存

這就是爲什麼最初的呼叫需要一段時間

一般的東西留在緩存:

  • 仍在使用中
  • 無記憶壓力
  • 仍然有效(例如,統計數據的更新將無效緩存計劃)

如果您擔心,添加更多的RAM。另請注意,每個數據庫將具有不同的加載模式,SQL Server將很好地處理內存。除非你沒有足夠的RAM ...

+0

感謝您的信息 – scarpacci 2010-11-09 06:16:44

4

documentation

執行計劃,只要有足夠的內存來存儲它們保留在過程緩存。當內存壓力存在時,數據庫引擎使用基於成本的方法來確定從過程高速緩存中刪除哪些執行計劃。爲了做出基於成本的決策,數據庫引擎根據以下因素增加和減少每個執行計劃的當前成本變量。

這個鏈接也可能是你的興趣:Most Executed Stored Procedure?

+0

感謝OMG小馬....我會看看 – scarpacci 2010-11-08 18:46:37