verwendetes Datenbanksystem: MSSQL Server 2005 Enterprise Edition
Hallo,
kann mir jemand erklären, wann der Cache des SQL Servers 2005 geleert wird?
Also zum Beispiel, wenn seit einem gewissen Zeitraum keine Transaktion stattgefunden hat oder wenn der Cache überläufen würde.
Gibts da Grenzen oder ist das willkürlich?
Achtung! - Hinter dir ist ein dreiköpfiger Affe!
Hallo!
Hab' zwar keine Antwort auf deine Frage, aber eine Gegenfrage: Aus welchem Grund interessiert dich dass (hilft vielleicht anderen noch bei der Beantwortung)?
Wenn du den Cache manuell löschen willst, geht das mit
dbcc freeproccache
go
dbcc dropcleanbuffers
go
dann noch die tempdb löschen mit
dbcc shrinkdatabase (tempdb, 10)
und die nächste Abfrage wird "cachefrei" ausgeführt.
Die Größe des Cache (bzw. des max. zu benutzenden Speichern) kann man ja einstellen. Und ich denke mal, wenn der voll ist, wird entweder in die tempdb ausgelagert oder alte Bereiche werden frei gegeben.
Wenn die DB stark frequentiert ist, wird sowieso immer das Maximum in Benutzung sein.
Nobody is perfect. I'm sad, i'm not nobody 🙁
Hallo Tom,
ich habe ein SQL-Statement, dass nach dem manuellem Leeren des Caches (DBCC DROPCLEANBUFFERS) ca. 10 Sekunden dauert und bis zum nächsten Leeren natürlich gecacht wird. (< 0 Sek)
Beim Kunden treten ab und an SQL-Timeouts zu ganz willkürlichen Zeiten auf, auch teilweise nachts um 4 Uhr, wenn fast niemand mehr arbeitet.
Daher die Vermutung, dass der Cache auch geleert wird, wenn nichts getan wird.
Im Netz finde ich leider keine gute Erklärung.
Achtung! - Hinter dir ist ein dreiköpfiger Affe!