Ich habe einige Tabellen in meiner Datenbank, die nicht zwischengespeichert werden sollten.
Wie weise ich SQL Server an, die Seiten einer Tabelle nicht zwischenzuspeichern, oder wie lösche ich eine einzelne Tabelle aus dem Cache?
Das Leeren des gesamten Caches ist keine Option.
Ich verwende SQL Server 2008 und SQL Server 2008 R2.
sql-server
sql-server-2008
sql-server-2008-r2
Catalin Adler
quelle
quelle
Antworten:
Es gibt keine Möglichkeit, dies zu tun.
DBCC DROPCLEANBUFFERS
akzeptiert keine Parameter für eine bestimmte Datenbank oder ein bestimmtes Objekt. Intern kann SQL Server dies auf Datenbankebene tun, jedoch werden bei einer DatenbankAUTO_CLOSE
alle entsprechenden Seiten aus dem Puffercache entfernt.Auch intern kann SQL Server bestimmte Seiten so markieren, dass sie die ersten sind, die vom faulen Schreiber rausgeschmissen werden. Dies wird von DMVs verwendet
sys.dm_db_index_physical_stats
, um zu vermeiden, dass der Pufferpool wie in diesem Artikel erwähnt geleert wird. Diese Funktionalität wird uns jedoch in keiner Weise zur Verfügung gestellt (auch wenn es nützlich sein kann, sie bei einem einmaligen Scan angeben zu können eines großen Tisches zum Beispiel).quelle
Sie können nicht angeben, dass bestimmte Tabellen nicht zwischengespeichert werden sollen. Was lässt Sie denken, dass Sie die Tabellen nicht im Cache haben möchten?
SQL Server führt ALLE normalen Vorgänge im Pufferpool aus. Wenn Sie also SQL Server anweisen könnten, keine Tabelle in den Cache zu laden, wäre diese Tabelle für normale DML-Vorgänge nicht zugänglich.
quelle