Mat*_*t M 8 sql-server-2005 sql-server
在 SQL Server 2005 中,当计划缓存填满时会发生什么?我做了一些研究,从收集的点点滴滴来看,似乎缓存计划被赋予了一个“年龄”,其中包括它的重量或编译成本,乘以自缓存以来运行的次数。随着时间的推移,这个年龄递减,直到它达到 0,当它被认为“老化”并且是需要时冲洗的候选者。当计划缓存填满时,过时的计划将从缓存中刷新。
幕后是否还有其他事情使这种情况复杂化?
谢谢,
马特
在 MSDN 上找到的主题的最佳信息在这里:执行计划缓存和重用 。引自 MSDN 文章:
只要有足够的内存来存储它们,执行计划就会保留在过程缓存中。当存在内存压力时,数据库引擎使用基于成本的方法来确定要从过程缓存中删除哪些执行计划。为了做出基于成本的决策,数据库引擎根据以下因素增加和减少每个执行计划的当前成本变量。
当存在内存压力时,数据库引擎通过从过程缓存中删除执行计划来做出响应。为了确定要删除哪些计划,数据库引擎会反复检查每个执行计划的状态,并在其当前成本为零时删除计划。存在内存压力时,不会自动删除当前成本为零的执行计划;仅当数据库引擎检查计划并且当前成本为零时才会删除它。在检查执行计划时,如果查询当前未使用该计划,则数据库引擎会通过降低当前成本将当前成本推向零。”
最好阅读完整的文章,它有很好的文档记录。看到它也有一些链接。
归档时间: |
|
查看次数: |
609 次 |
最近记录: |