1

我有一个非常简单的查询

SELECT count(*) FROM MyTable

其中有 508,000 行。当我第一次运行上述查询时,返回结果大约需要 53 秒。如果我再次重新运行查询,则返回结果需要几毫秒。

我相信 SQL Server 正在缓存查询/结果?我是否可以告诉 SQL Server 不要缓存查询/结果,或者以某种方式清除缓存/结果?

在我的应用程序中,我正在尝试进行一些性能调整,但上述问题对我没有帮助。

4

1 回答 1

2

是的,您可以像这样刷新数据缓冲区(但说真的,不要!):

DBCC DROPCLEANBUFFERS

使用 DBCC DROPCLEANBUFFERS 使用冷缓冲区缓存测试查询,而无需关闭并重新启动服务器。

要从缓冲池中删除干净的缓冲区,首先使用 CHECKPOINT 生成冷缓冲区高速缓存。这会强制将当前数据库的所有脏页写入磁盘并清理缓冲区。完成此操作后,您可以发出 DBCC DROPCLEANBUFFERS 命令从缓冲池中删除所有缓冲区。

参考

您已经排除了数据库是您的瓶颈(通常是瓶颈),因此我建议您对代码进行分析,而不是释放数据缓冲区缓存。

于 2013-12-26T23:38:10.023 回答