SQL Server如何从计划缓存中检索计划?

时间:2014-06-16 21:47:50

标签: sql sql-server database-administration

简单的问题。在SQL Server中,如果查询可以使用计划缓存中已有的执行计划,它如何存储/检索它?

我的猜测是它使用某种字典对象,其中查询是关键,但我不清楚这一点。

1 个答案:

答案 0 :(得分:2)

我不确定内部表示,但SQL Server缓存已编译的内容 查询计划。您可以在sys.dm_exec_cached_plans中看到计划缓存,它为SQL Server缓存的每个查询计划返回一行,以便更快地执行查询。您可以使用此动态管理视图来查找缓存的查询计划,缓存的查询文本,缓存计划占用的内存量以及缓存计划的重用计数。

SQL Server也会缓存查询结果。我的意思是它缓存它读取的数据页面 在记忆中。您可以使用SET STATISTICS IO ON进行检查,{{3}}会输出类似下面的内容以及其他数据。

logical reads X, physical reads Y

这将告诉您是否已从磁盘(physical reads)或内存缓存(logical reads)读取页面。

希望这有点帮助。