【问题标题】:SQL Server Procedure CacheSQL Server 过程缓存
【发布时间】:2010-11-08 18:36:03
【问题描述】:

如果您在同一个 SQL Server 上运行多个 DB,它们是否都在争夺过程缓存?我想弄清楚的是 SQL Server 如何确定保留过程缓存的时间?如果其他数据库正在消耗内存,这会影响同一服务器上给定数据库的过程缓存吗?

我发现在我们的应用程序中的一些初始页面加载上它很慢,但是一旦查询被缓存,它显然很快。只是不确定 SQL Server 将过程缓存保留多长时间,以及其他数据库是否会影响该时间。

【问题讨论】:

    标签: sql-server sql-server-2005 sql-server-2008


    【解决方案1】:

    缓存/编译是端到端发生的

    • IIS 默认不使用 20 分钟后卸载。
    • .net 编译到 CLR
    • SQL 编译
    • 将数据加载到内存中

    这就是为什么初始调用需要一些时间

    通常东西会留在缓存中:

    • 仍在使用中
    • 没有内存压力
    • 仍然有效(例如统计更新将使缓存的计划无效)

    如果您担心,请添加更多 RAM。另请注意,每个数据库将具有不同的负载模式,SQL Server 将很好地处理内存。除非你没有足够的内存...

    【讨论】:

      【解决方案2】:

      来自documentation

      只要有足够的内存来存储执行计划,它们就会保留在过程缓存中。当存在内存压力时,数据库引擎使用基于成本的方法来确定要从过程缓存中删除哪些执行计划。为了做出基于成本的决策,数据库引擎会根据以下因素增加和减少每个执行计划的当前成本变量。

      您可能也对此链接感兴趣:Most Executed Stored Procedure?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-14
        • 1970-01-01
        • 2012-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-27
        • 1970-01-01
        相关资源
        最近更新 更多