【问题标题】:How to clear cache of latest select query that was run? (or prevent a select query from caching)如何清除已运行的最新选择查询的缓存? (或防止选择查询缓存)
【发布时间】:2014-04-15 09:59:28
【问题描述】:

我正在使用 MS SQL Server 2012。我正在尝试查看服务器中的优化,因此我无法清除所有内容。

这个link 不适合我。 (或者这个example

有什么建议我可以选择查询并在之后清除缓存吗?
(或者阻止它缓存会更好)

编辑:
最期望的结果是像第一次运行一样测试选择查询。

【问题讨论】:

    标签: sql-server caching sql-server-2012 query-optimization sqlcachedependency


    【解决方案1】:

    您可以查询sys.dm_exec_connections 以获取给定连接的最后执行查询的句柄,然后使用DBCC FREEPROCCACHE 驱逐该计划。确保在另一个连接上执行此操作。

    或者,使用WITH RECOMPILEOPTION(RECOMPILE) 根本不缓存计划:

    http://blogs.msdn.com/b/sqlmeditation/archive/2013/01/01/is-it-really-quot-recompile-quot-or-a-quot-private-temporary-compile-quot.aspx

    【讨论】:

    • 我现在正在我的本地机器上尝试这个。当我运行以下命令时:CHECKPOINT; GO DBCC DROPCLEANBUFFERS; GO DBCC FREEPROCCACHE; GO DBCC FREESESSIONCACHE; GO 查询首先需要一分钟才能完成,当我运行 DBCC FREEPROCCACHERECOMPILE 东西时,第二次查询需要不到一秒.. 除了缓存之外,还有什么其他东西可以保存得这么快吗? (第二次运行不到 1 秒)
    • 是的,数据被缓存了,每次都重复CHECKPOINT / DROPCLEANBUFFERS例程。
    • 本地没问题,但是在服务器中,我不能只清除所有缓存。有没有办法让特定查询像第一次查询一样运行?
    • 不,您不能只清除数据缓冲区中选定的页面,只能清除选定的计划。但是你在应用SET STATISTICS IO ON时要注意逻辑读取,还要注意SET STATISTICS TIME ON的CPU时间。
    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 2019-04-15
    • 2020-02-27
    • 2017-02-02
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多