实体框架:PreWarm执行计划缓存

时间:2013-09-05 08:23:55

标签: sql-server linq entity-framework caching

我有一个由LINQ To Entities生成的复杂SQL查询。

  • 在SQL Server中未缓存执行计划时需要8秒。
  • 在SQL Server中缓存执行计划需要2秒。

在EF或SQL Server中有一种预热执行计划缓存的方法吗?

由于

1 个答案:

答案 0 :(得分:3)

没有

您遇到性能问题并通过测量和调查瓶颈来解决性能问题。遵循优秀的Waits and Queues方法。阅读Understanding how SQL Server executes a query以了解查询执行时会发生什么。

您需要隔离一些问题:

  • 是你所说的冷计划缓存,还是冷数据缓存(更有可能)?
  • 如果是冷计划缓存,编译真的持续6秒吗?我不买这个。
  • 如果是冷数据缓存,为什么您的查询会发出6秒的IO?
  • 即使使用热缓存,您的查询也会耗费2秒钟。为什么?它是端到端扫描表吗?你错过了索引还是更多? (提示:是的,你这样做。)

阅读Waits and Queues论文将教你如何回答这些问题。

解决原因,而不是症状。