Avant d'exécuter un test de performances / une ligne de base pour une application qui utilise SQL Server, je veux pouvoir définir l'instance sur un état "propre", sans redémarrer l'instance. Il y a des étapes que j'ai tendance à suivre, mais je veux construire une liste définitive qui est dans la séquence correcte et n'a pas d'étapes redondantes.
Cette liste d'étapes permet-elle de définir SQL Server sur un état «propre»?
La séquence est-elle logique / correcte?
Y a-t-il des étapes redondantes?
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
est agréable à tester mais pas toujours précis. Si vous faites référence à une table à volume élevé, il est très probable que vous ayez presque toujours des pages en mémoire, et le temps d'E / S ne sera pas un facteur important dans cette requête. Vous pouvez placer plus de poids sur IO que ce qui est réaliste dans ce cas.