Die anderen Antworten beziehen sich auf Gründe, warum sie nicht ausgeführt werden DBCC FREEPROCCACHE
. Es gibt jedoch auch einige Gründe dafür:
- Konsistenz
Wenn Sie zwei verschiedene Abfragen oder Verfahren vergleichen möchten, die versuchen, dasselbe auf unterschiedliche Weise zu tun, werden sie wahrscheinlich auf die gleichen Seiten gelangen. Wenn Sie Abfrage Nr. 1 und Abfrage Nr. 2 naiv ausführen, ist die zweite möglicherweise viel schneller, weil diese Seiten von der ersten Abfrage zwischengespeichert wurden. Wenn Sie den Cache vor jeder Ausführung leeren, werden sie auf einer gleichmäßigen Grundlage gestartet.
Wenn Sie die Hot-Cache-Leistung testen möchten, müssen Sie die Abfragen mehrmals abwechselnd ausführen und die ersten paar Durchläufe verwerfen. Durchschnitt die Ergebnisse.
- Schlechteste Leistung
Angenommen, Sie haben eine Abfrage, die für einen Hot-Cache eine Sekunde und für einen Cold-Cache eine Minute dauert. Eine Optimierung, die die In-Memory-Abfrage um 20% verlangsamt, die IO-gebundene Abfrage jedoch um 20% beschleunigt, könnte ein großer Gewinn sein: Während des normalen Betriebs wird niemand die zusätzlichen 200 ms bemerken, aber wenn etwas eine Abfrage erzwingt Laufen Sie gegen die Festplatte, dauert es 48 Sekunden anstatt 60 Sekunden, um einen Verkauf zu retten.
Dies ist bei modernen Systemen mit zehn Gigabyte Speicher und relativ schnellem SAN- und SSD-Speicher weniger problematisch, spielt aber dennoch eine Rolle. Wenn ein Analyst eine umfangreiche Table-Scan-Abfrage für Ihre OLTP-Datenbank ausführt, bei der die Hälfte Ihres Puffercaches gelöscht wird, werden Sie durch speichereffiziente Abfragen schneller wieder auf den neuesten Stand gebracht.
DBCC FLUSHPROCINDB
aufgetreten: Der DBCC-Anweisung wurde eine falsche Anzahl von Parametern übergeben.