繁体   English   中英

SQL Server 2008 R2中运行缓慢的存储过程

[英]Slow running stored procedure in SQL Server 2008 R2

因此,很少有我完全感到困惑,而是想看看别人对我所经历的事情的看法。

我被要求查看运行缓慢的存储过程。 目前大约需要8到12分钟才能运行。

因此,我注意到一个有用的索引丢失了并添加了它-现在需要8秒钟。 但是,如果我重新启动SQL Server并重新运行存储的proc,它将再次花费8-12分钟。

如果然后停止查询并删除新索引,然后重新运行存储的proc,则需要几秒钟的时间。 离奇。

有没有人经历过这样的事情? 如果这有任何区别,则存储过程将调用View。

问: if I restart SQL Server and re-run the stored proc it's taking 8-12 minutes again.

执行查询时,数据将以块的形式读入内存。 这些块保留在内存中,但是会“老化”。 这意味着这些块被标记为具有最后访问权限,并且当Sql Server需要另一个块进行新查询并且内存缓存已满时,最近使用最少的块(最旧的块)就会被踢出内存。 (在大多数情况下-全表扫描块会立即老化,以防止全表扫描超过内存并阻塞服务器)。

问: If I then stop the query and delete the new index then re-run the stored proc it takes seconds again.

这里发生的是,第一个查询中的内存中的数据块尚未被踢出内存,因此可以用于第二个查询,这意味着可以避免磁盘访问并提高了性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM