DBCC FREESYSTEMCACHE (Transact-SQL)

Gibt alle nicht verwendeten Cacheeinträge aus allen Caches frei. SQL Server Database Engine (Datenbankmodul) löscht nicht verwendete Cacheeinträge aktiv im Hintergrund und macht so neuen Speicherplatz für aktuelle Einträge verfügbar. Sie können mit diesem Befehl jedoch nicht verwendete Einträge aus allen Caches oder aus einem angegebenen Cache für den Ressourcenkontrollenpool löschen.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

DBCC FREESYSTEMCACHE 
        ( 'ALL' [, pool_name ] ) 
    [WITH 
    { [ MARK_IN_USE_FOR_REMOVAL ] , [ NO_INFOMSGS ]  }
    ]

Argumente

  • ( 'ALL' [, pool_name ] )
    ALL gibt alle unterstützten Caches an.

    pool_name gibt einen Cache für den Ressourcenkontrollenpool an. Nur diesem Pool zugeordnete Einträge werden freigegeben.

  • MARK_IN_USE_FOR_REMOVAL
    Gibt zurzeit verwendete Einträge asynchron aus den jeweiligen Caches nach ihrer Verwendung frei. Neue Einträge, die nach der Ausführung von DBCC FREESYSTEMCACHE WITH MARK_IN_USE_FOR_REMOVAL im Cache erstellt wurden, sind nicht betroffen.

  • NO_INFOMSGS
    Alle Informationsmeldungen werden unterdrückt.

Resultsets

DBCC FREESYSTEMCACHE gibt Folgendes zurück:

"Die DBCC-Ausführung wurde abgeschlossen. Falls DBCC Fehlermeldungen ausgegeben hat, wenden Sie sich an den Systemadministrator."

Hinweise

Durch das Ausführen von DBCC FREESYSTEMCACHE wird der Plancache für die Instanz von SQL Server gelöscht. Durch das Löschen des Plancaches wird eine Neukompilierung aller nachfolgenden Ausführungspläne verursacht, und möglicherweise entsteht plötzlich eine temporäre Verringerung der Abfrageleistung. Für jeden geleerten Cachespeicher im Plancache enthält das SQL Server-Fehlerprotokoll folgende Meldung zur Information: "Von SQL Server wurden für den '%s'-Cachespeicher (Bestandteil des Plancaches) %d Leerungen des Cachespeichers gefunden, die von 'DBCC FREEPROCCACHE'- oder 'DBCC FREESYSTEMCACHE'-Vorgängen ausgelöst wurden." Diese Meldung wird so lange alle fünf Minuten protokolliert, wie der Cache innerhalb dieses Zeitintervalls geleert wird.

Berechtigungen

Erfordert die ALTER SERVER STATE-Berechtigung auf dem Server.

Beispiele

A. Freigeben nicht verwendeter Cacheeinträge aus einem Cache für den Ressourcenkontrollenpool

Im folgenden Beispiel wird veranschaulicht, wie Caches geleert werden, die einem angegebenen Ressourcenpool für die Ressourcenkontrolle zugeordnet sind.

-- Clean all the caches with entries specific to the resource pool named "default".
DBCC FREESYSTEMCACHE ('ALL','default');

B. Freigeben von Einträgen aus den jeweiligen Caches nach ihrer Verwendung

Im folgenden Beispiel wird die MARK_IN_USE_FOR_REMOVAL-Klausel dazu verwendet, alle Einträge von allen aktuellen Caches nach ihrer Verwendung freizugeben.

DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;