SQL查询性能问题 - 我搞砸了什么?

Ray*_*Ray 3 sql t-sql sql-server

我为问题的模糊性道歉,但我在生产服务器上意外地运行了以下查询(我打算在我的本地服务器上测试它):

DBCC FREEPROCCACHE
GO
DBCC DROPCLEANBUFFERS
GO
DECLARE @start DATETIME SET @start = getDate()
EXEC test_1a
SELECT getDate() - @start AS Execution_Time
GO
Run Code Online (Sandbox Code Playgroud)

我的sql知识只是基本的,所以我不确定这是做什么的.在我意识到我连接到错误的机器后,我取消了查询.

有人可以解释一下这些陈述的作用以及是否有任何影响?

Mar*_*ith 11

是.

没有永久性损坏(假设存储过程没有执行任何操作)但您刚刚清除了整个过程高速缓存并从生产盒上的缓冲区高速缓存中删除了所有非脏页.(脏页是在内存中已修改但尚未写入光盘的页面)

这意味着现在进入的查询都需要重新编译(高CPU使用率),并且几乎所有数据都需要从光盘重新读入.

顺便说一句:我建议使用免费的SSMS Tools Pack Addin.您可以使用" 窗口连接着色"为所有生产服务器窗口提供红色标题栏,例如,以减少此类错误.

SSMS工具包

  • @ jadarnel27不会产生任何长期影响,只是意味着SQL Server在重新编译执行计划和重新填充缓存之前会受到巨大的性能影响.如果没有人注意到任何东西,你可能已经侥幸逃脱了. (2认同)