【发布时间】:2014-04-15 09:59:28
【问题描述】:
我正在使用 MS SQL Server 2012。我正在尝试查看服务器中的优化,因此我无法清除所有内容。
有什么建议我可以选择查询并在之后清除缓存吗?
(或者阻止它缓存会更好)
编辑:
最期望的结果是像第一次运行一样测试选择查询。
【问题讨论】:
标签: sql-server caching sql-server-2012 query-optimization sqlcachedependency
我正在使用 MS SQL Server 2012。我正在尝试查看服务器中的优化,因此我无法清除所有内容。
有什么建议我可以选择查询并在之后清除缓存吗?
(或者阻止它缓存会更好)
编辑:
最期望的结果是像第一次运行一样测试选择查询。
【问题讨论】:
标签: sql-server caching sql-server-2012 query-optimization sqlcachedependency
您可以查询sys.dm_exec_connections 以获取给定连接的最后执行查询的句柄,然后使用DBCC FREEPROCCACHE 驱逐该计划。确保在另一个连接上执行此操作。
或者,使用WITH RECOMPILE 或OPTION(RECOMPILE) 根本不缓存计划:
【讨论】:
CHECKPOINT; GO DBCC DROPCLEANBUFFERS; GO DBCC FREEPROCCACHE; GO DBCC FREESESSIONCACHE; GO 查询首先需要一分钟才能完成,当我运行 DBCC FREEPROCCACHE 或 RECOMPILE 东西时,第二次查询需要不到一秒.. 除了缓存之外,还有什么其他东西可以保存得这么快吗? (第二次运行不到 1 秒)
SET STATISTICS IO ON时要注意逻辑读取,还要注意SET STATISTICS TIME ON的CPU时间。