在为使用SQL Server的应用程序运行性能测试/基准之前,我希望能够将实例设置为“干净”状态,而无需重新启动实例。我倾向于遵循一些步骤,但是我想建立一个确定的列表,该列表的顺序正确,没有多余的步骤。
此步骤列表是否完成将SQL Server设置为“干净”状态?
顺序逻辑/正确吗?
有多余的步骤吗?
CHECKPOINT -- Write all dirty pages
DBCC DROPCLEANBUFFERS -- All should be clean after checkpoint?
DBCC FREEPROCCACHE -- Clear the plan cache
DBCC FREESYSTEMCACHE -- Is this necessary after FREEPROCCACHE?
DBCC FREESESSIONCACHE -- May not be necessary if distributed queries aren't used, but want to catch all scenarios
EXEC SP_UPDATESTATS -- Refresh stats
'BEGIN TESTING!'
您是在谈论在生产环境中还是在隔离的测试环境中进行测试?
—
bopapa_1979
在Prod环境中进行测试的任何人都应该被解雇。:)是的,测试环境。
—
埃里克·希金斯
DROPCLEANBUFFERS
可以很好地进行测试,但并不总是准确的。如果您引用的是大容量表,则很有可能几乎总是在内存中有页面,并且IO时间在该查询中不会成为重要因素。在这种情况下,您可能比实际情况更重视IO。