Vollständiges Plan-Cache-Verhalten

8

Was passiert in SQL Server 2005, wenn der Plan-Cache voll ist? Ich habe einige Nachforschungen angestellt, und aus den gesammelten Teilen geht hervor, dass zwischengespeicherte Pläne ein "Alter" erhalten, das sich aus dem Gewicht oder den Kosten für die Kompilierung zusammensetzt, multipliziert mit der Häufigkeit, mit der sie seit dem Zwischenspeichern ausgeführt wurden. Mit der Zeit wird dieses Alter verringert, bis es 0 erreicht, wenn es als "gealtert" betrachtet wird und bei Bedarf zum Spülen in Frage kommt. Wenn der Plan-Cache voll ist, werden veraltete Pläne aus dem Cache gelöscht.

Gibt es noch etwas, das hinter den Kulissen passiert, um dieses Szenario zu komplizieren?

Vielen Dank,

Matt

Matt M.
quelle

Antworten:

9

Die besten Informationen zu dem auf MSDN gefundenen Thema finden Sie hier: Caching und Wiederverwendung von Ausführungsplänen . Zitat aus dem MSDN-Artikel:

"Entfernen von Ausführungsplänen aus dem Prozedur-Cache

Ausführungspläne verbleiben im Prozedurcache, solange genügend Speicher zum Speichern vorhanden ist. Wenn Speicherdruck besteht, verwendet das Datenbankmodul einen kostenbasierten Ansatz, um zu bestimmen, welche Ausführungspläne aus dem Prozedurcache entfernt werden sollen. Um eine kostenbasierte Entscheidung zu treffen, erhöht und verringert das Datenbankmodul eine aktuelle Kostenvariable für jeden Ausführungsplan gemäß den folgenden Faktoren.

Wenn Speicherdruck besteht, entfernt das Datenbankmodul Ausführungspläne aus dem Prozedurcache. Um festzustellen, welche Pläne entfernt werden sollen, überprüft das Datenbankmodul wiederholt den Status jedes Ausführungsplans und entfernt Pläne, wenn ihre aktuellen Kosten Null sind. Ein Ausführungsplan ohne aktuelle Kosten wird nicht automatisch entfernt, wenn Speicherdruck besteht. Es wird nur entfernt, wenn das Datenbankmodul den Plan überprüft und die aktuellen Kosten Null sind. Bei der Prüfung eines Ausführungsplans schiebt das Datenbankmodul die aktuellen Kosten gegen Null, indem es die aktuellen Kosten senkt, wenn eine Abfrage den Plan derzeit nicht verwendet. "

Es ist besser, den vollständigen Artikel zu lesen, er ist sehr gut dokumentiert. Sehen Sie, dass es auch einige Links hat.

Marian
quelle