对于这个问题的含糊之处,我深表歉意,但我不小心在生产服务器上运行了以下查询(我打算在我的本地服务器上测试它):
DBCC FREEPROCCACHE
GO
DBCC DROPCLEANBUFFERS
GO
DECLARE @start DATETIME SET @start = getDate()
EXEC test_1a
SELECT getDate() - @start AS Execution_Time
GO
我的sql知识略高于基础,所以我不确定这是做什么的。在我意识到我连接到错误的机器后,我取消了查询。
谁能解释一下这组语句的作用以及是否有任何影响?
最佳答案
是的。
没有永久性损坏(假设存储过程没有做任何事情),但是您刚刚清除了整个过程缓存并从生产机器上的缓冲区缓存中删除了所有非脏页。 (脏页是在内存中被修改但尚未写入磁盘的页)
这意味着现在传入的查询都需要重新编译(高 CPU 使用率),并且几乎所有数据都需要从磁盘重新读取。
顺便说一句:我建议使用免费的 SSMS 工具包插件。您可以使用 Window Connection Coloring例如给所有生产服务器窗口一个红色的标题栏,以减少这种错误的可能性。
关于Sql 查询性能问题 - 我搞砸了什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272821/