我有一个非常简单的查询
SELECT count(*) FROM MyTable
其中有508,000行。当我第一次运行上述查询时,返回结果大约需要53秒。如果我再次重新运行查询,则返回结果需要几毫秒。
我相信SQL Server正在缓存查询/结果?是否有可能告诉SQL Server不要缓存查询/结果,或以某种方式清除缓存/结果?
在我的应用程序中,我正在尝试进行一些性能调整,但上面的问题并没有帮助我。
答案 0 :(得分:2)
是的,您可以像这样刷新数据缓冲区(但严重的是,不要!):
DBCC DROPCLEANBUFFERS
使用DBCC DROPCLEANBUFFERS使用冷缓冲区缓存测试查询 没有关闭并重新启动服务器。
要从缓冲池中删除干净的缓冲区,首先使用CHECKPOINT 生成一个冷缓冲区缓存。这会强制所有脏页面 要写入磁盘并清理缓冲区的当前数据库。后 你这样做,你可以发出DBCC DROPCLEANBUFFERS命令来删除所有 来自缓冲池的缓冲区。
您已经排除了数据库作为瓶颈(通常是这样),因此我建议您不要释放数据缓冲区缓存,而是建议您对代码进行分析。