Wir haben einige SQLServer: Memory Manager
Metriken überwacht und festgestellt, dass nach dem DBCC CheckDB
Job Metriken
Database Cache Memory (KB)
fällt deutlich ab. Um genau zu sein, wurde der zwischengespeicherte DB-Speicher von 140 GB auf 60 GB reduziert. Und danach während der Woche langsam wieder hochfahren. (Menge von " Free Memory KB
" ging direkt danach von 20 auf 100 GB CheckDB
)
DBCC CheckDB
wird jeden Sonntag ausgeführt, daher muss der Datenbank-Cache-Speicher jede Woche erneut hochgefahren werden
What is the behavior of this ? Why CheckDB pushes database pages out of memory ?
Die zweite Frage ist, warum sich " buffer cache hit ratio
" nach DBCC CheckDB
Abschluss nicht geändert hat.
Es war durchschnittlich 99,99% und nach dem DBCC CheckDB
Job sinkt es auf ~ 98,00% und kehrt ziemlich schnell auf 99% zurück, während ich erwartet habe, dass " buffer cache hit ratio
" signifikant sinken wird, weil Datenbankdaten wieder aus dem Speicher in den RAM gelesen werden müssen?
quelle
Antworten:
Dies ist richtig. Sie können dieses Verhalten deutlich sehen, wenn dieser Beispielbefehl
DBCC CHECKDB
um ausgeführt wird21h45
Warum
Dieses Verhalten ist darauf zurückzuführen, dass der
database snapshot
durch denDBCC
Befehl erstellte Löschvorgang alle Objekte im Speicher entfernt.Sie können das Verhalten replizieren, indem Sie einen Snapshot einer Datenbank erstellen, einige Daten in den Speicher laden und diesen Snapshot dann löschen
BufferSize vor dem Löschen des Snapshots
Löschen des Schnappschusses
BufferSize nach dem Löschen des Snapshots
Dies hängt davon ab, wie schnell die Daten wieder in Ihren Puffercache geladen werden.
Wenn sich Ihr Pufferpool über einen längeren Zeitraum füllt, sollte dieses Verhältnis im Durchschnitt höher bleiben.
Dies entspricht diesem Teil Ihrer Frage:
quelle