简单的问题。在SQL Server中,如果查询可以使用计划缓存中已有的执行计划,它如何存储/检索它?
我的猜测是它使用某种字典对象,其中查询是关键,但我不清楚这一点。
答案 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
)读取页面。
希望这有点帮助。