Abe*_*ler 11 performance caching sql-server-2005
当我第一次运行某个存储过程时,大约需要2分钟才能完成.当我第二次运行时,它在大约15秒内完成.我假设这是因为在第一次运行后所有内容都被缓存了.在我第一次运行此程序之前,我是否可以"加热缓存"?缓存信息是仅在我再次使用相同参数调用相同存储过程时使用,还是在我使用不同参数调用相同存储过程时使用?
Chr*_*tta 11
执行查询时,数据将以块的形式读入内存.这些块保留在内存中,但它们会"老化".这意味着块被标记为最后一次访问,并且当Sql Server需要另一个块用于新查询并且内存缓存已满时,最近最少使用的块(最旧的)被踢出内存.(在大多数情况下 - 全表扫描块会立即老化,以防止全表扫描超出内存并阻塞服务器).
这里发生的事情是,来自第一个查询的内存中的数据块还没有被踢出内存,因此可以用于第二个查询,这意味着可以避免磁盘访问并提高性能.
所以你的问题实际上是在问"我可以将我需要的数据块放入内存而不将其读入内存(实际上是在进行查询)吗?".答案是否定的,除非您想要缓存整个表并将它们永久驻留在内存中,从您描述的查询时间(以及数据大小)开始,这可能不是一个好主意.
提高性能的最佳选择是查看查询执行计划,看看更改索引是否可以提供更好的结果.这里有两个主要方面可以提高性能:
| 归档时间: |
|
| 查看次数: |
17776 次 |
| 最近记录: |