Pozostałe odpowiedzi są poprawne odnośnie powodów, dla których nie należy uruchamiać DBCC FREEPROCCACHE
. Istnieje jednak kilka powodów:
- Konsystencja
Jeśli chcesz porównać dwa różne zapytania lub procedury, które próbują zrobić to samo na różne sposoby, prawdopodobnie trafią na te same strony. Jeśli naiwnie uruchomisz zapytanie nr 1, a następnie zapytanie nr 2, drugie może być znacznie szybsze po prostu dlatego, że te strony były buforowane przez pierwsze zapytanie. Jeśli wyczyścisz pamięć podręczną przed każdym wykonaniem, zaczną one działać równo.
Jeśli chcesz przetestować wydajność buforowania na gorąco, pamiętaj, aby uruchomić zapytania kilka razy, naprzemiennie i odrzucić pierwsze kilka uruchomień. Średnia wyników.
- Wydajność w najgorszym przypadku
Załóżmy, że masz zapytanie, które trwa jedną sekundę w przypadku gorącej pamięci podręcznej, ale jedną minutę w przypadku zimnej pamięci podręcznej. Optymalizacja, która powoduje, że zapytanie w pamięci jest o 20% wolniejsze, ale zapytanie związane z IO o 20% szybciej może być dużą wygraną: podczas normalnych operacji nikt nie zauważy dodatkowych 200 ms w normalnych okolicznościach, ale jeśli coś zmusi zapytanie do uruchomić na dysku, a 48 sekund zamiast 60 może zaoszczędzić na sprzedaży.
Jest to mniejszy problem w nowoczesnych systemach z dziesiątkami gigabajtów pamięci i stosunkowo szybką pamięcią SAN i SSD, ale nadal ma to znaczenie. Jeśli jakiś analityk uruchomi masową kwerendę skanowania tabeli w bazie danych OLTP, która wyczyści połowę bufora pamięci podręcznej, zapytania efektywnie korzystające z pamięci szybciej przywrócą szybkość.
DBCC FLUSHPROCINDB
Wystąpił błąd podczas działania : do instrukcji DBCC podano niepoprawną liczbę parametrów.