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!'
DROPCLEANBUFFERS
로 테스트에는 적합하지만 항상 정확한 것은 아닙니다. 대용량 테이블을 참조하는 경우 거의 항상 메모리에 페이지가 있고 IO 시간은 해당 쿼리에 큰 영향을 미치지 않습니다. 이 경우 실제보다 IO에 더 많은 가중치를 부여 할 수 있습니다.