Przed uruchomieniem testu wydajności / linii bazowej dla aplikacji korzystającej z programu SQL Server chcę ustawić instancję w stanie „czystym” bez ponownego uruchamiania instancji. Są kroki, które zwykle wykonuję, ale chcę zbudować ostateczną listę, która ma prawidłową kolejność i nie zawiera zbędnych kroków.
Czy ta lista kroków umożliwia ustawienie programu SQL Server w stan „czysty”?
Czy sekwencja jest logiczna / poprawna?
Czy są jakieś zbędne kroki?
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
jest miły do testowania, ale nie zawsze dokładny. Jeśli odwołujesz się do tabeli o dużej objętości, jest bardzo prawdopodobne, że prawie zawsze będziesz mieć strony w pamięci, a czas IO nie będzie dużym czynnikiem w tym zapytaniu. W takim przypadku możesz kłaść większy nacisk na IO niż jest to realistyczne.