Werden SQL Server-Statistiken in einer Datenbank oder einem Pufferpool gespeichert?

10

Sie fragen sich nur, ob Statistiken in der Datenbank gespeichert sind, aber nicht im Speicher? Wenn ich die Datenbank von einem Produktserver auf einem Entwicklungsserver sichern / wiederherstellen würde, würde sie dieselben Statistiken beibehalten, damit die Ausführungspläne nicht wesentlich anders sind, wenn ich sie auf dem Entwicklungsserver ausführe?

Joy Walker
quelle

Antworten:

15

Der Pufferpool ist ein Cache der Datenbank. Es gibt nie ein 'oder', Dinge, die sich im Pufferpool befinden, befinden sich immer auch in der Datenbank. Und alles, was aus der Datenbank gelesen wird, muss auch vorübergehend im Pufferpool vorhanden sein.

Was die Frage betrifft: Statistiken befinden sich in der Datenbank, sodass bei einer Sicherung / Wiederherstellung die Statistiken erhalten bleiben.

Beachten Sie jedoch, dass die Aufbewahrung von Statistiken keine Garantie für die Planung der Reproduzierbarkeit darstellt. Andere Faktoren beeinflussen die Planerstellung, wie die Anzahl der CPUs und die Größe des Arbeitsspeichers.

Remus Rusanu
quelle
ok, mach Sinn. Danke für die Klarstellung!
Joy Walker
3

Wie Remus sagte , werden Tabellenstatistiken in der Datenbank gespeichert, ähnlich wie bei anderen Objekten wie Tabellen und Indizes. Sie spielen eine große Rolle bei der Auswahl des Ausführungsplans, aber es gibt noch andere Faktoren.

Davon abgesehen kennt SQL Server eine andere Art von Statistiken, Statistiken, die uns Informationen über das aktuelle Verhalten geben.

Zum Beispiel die DMVs ys.dm_db_index_usage_statsund sys.dm_db_index_operational_statsRückgabestatistiken darüber, wie der Index verwendet wird.

Diese Statistiken werden nur im Speicher gespeichert. Die gehen beim Neustart des Servers verloren und reisen nicht mit der Sicherung.

Der Optimierer verwendet diese jedoch auch nicht, um einen Plan zu erstellen.

Sebastian Meine
quelle
Ja, deshalb hatte ich überhaupt die Frage / Verwirrung. Ich dachte, Statistiken ähneln DMVs. Sie könnten verschwunden sein, wenn der Server neu gestartet oder die Datenbank auf einem anderen Server wiederhergestellt wird. Vielen Dank für den Punkt.
Joy Walker