Czy statystyki SQL Server są przechowywane w bazie danych lub puli buforów?

10

Zastanawia mnie tylko, czy statystyki są przechowywane w bazie danych, ale nie w pamięci? Czy w przypadku tworzenia kopii zapasowej / przywracania bazy danych z serwera prod na serwer programistyczny zachowałbym te same statystyki, aby plany wykonania nie różniły się znacznie, jeśli robię to na serwerze programistycznym?

Joy Walker
źródło

Odpowiedzi:

15

Pula buforów jest pamięcią podręczną bazy danych. Nigdy nie ma „lub”, rzeczy, które znajdują się w puli buforów, również znajdują się w bazie danych. A wszystko odczytane z bazy danych musi, nawet tymczasowo, znajdować się w puli buforów.

Jeśli chodzi o pytanie: statystyki znajdują się w bazie danych, więc kopia zapasowa / przywracanie zachowa statystyki.

Należy jednak pamiętać, że zachowanie statystyk nie jest gwarancją zaplanowania odtwarzalności. Inne czynniki wpływają na generowanie planu, takie jak liczba procesorów i ilość pamięci RAM.

Remus Rusanu
źródło
ok, ma sens. Dziękuję za wyjaśnienie!
Joy Walker
3

Jak powiedział Remus , statystyki tabel są przechowywane w bazie danych podobnie jak inne obiekty, takie jak tabele i indeksy. Odgrywają dużą rolę w wyborze planu wykonania, ale są też inne czynniki.

To powiedziawszy, SQL Server zna inny rodzaj statystyk, statystyki, które dostarczają nam informacji o ostatnich zachowaniach.

Na przykład DMV ys.dm_db_index_usage_statsi sys.dm_db_index_operational_statszwracają statystyki dotyczące sposobu użycia indeksu.

Te statystyki są przechowywane tylko w pamięci. Zgubić się przy ponownym uruchomieniu serwera i nie podróżować z kopią zapasową.

Optymalizator nie używa ich jednak do generowania planu.

Sebastian Meine
źródło
Tak, właśnie dlatego miałem pytanie / zamieszanie. Myślałem, że statystyki są podobne do DMV. Mogą zniknąć po ponownym uruchomieniu serwera lub przywróceniu bazy danych na innym serwerze. Dzięki za rację.
Joy Walker,