2010-11-08 91 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