DBCC FREESYSTEMCACHE (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Gibt alle nicht verwendeten Cacheeinträge aus allen Caches frei. Die SQL Server-Datenbank-Engine 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 jedem Cache oder aus einem angegebenen Cache für den Resource Governor-Pool löschen.

Transact-SQL-Syntaxkonventionen

Syntax

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

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

( 'ALL' [ , pool_name ] )

  • ALLE

    Gibt alle unterstützten Caches an.

  • pool_name

    Gibt einen Resource Governor-Poolcache an. Nur diesem Pool zugeordnete Einträge werden freigegeben. Führen Sie den folgenden Befehl aus, um die verfügbaren Poolnamen aufzulisten:

    SELECT name FROM sys.dm_resource_governor_resource_pools;
    

Die meisten, aber nicht alle Caches können mithilfe dieses Befehls einzeln freigegeben werden.

MARK_IN_USE_FOR_REMOVAL

Gibt zurzeit verwendete Einträge asynchron aus den jeweiligen Caches nach ihrer Verwendung frei. Nachdem DBCC FREESYSTEMCACHE WITH MARK_IN_USE_FOR_REMOVAL ausgeführt wurde, sind neue Einträge, die im Cache erstellt wurden, nicht betroffen.

NO_INFOMSGS

Alle Informationsmeldungen werden unterdrückt.

Bemerkungen

Wenn Sie DBCC FREESYSTEMCACHE ausführen, 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. Das SQL Server-Fehlerprotokoll enthält für jeden geleerten Cachespeicher im Plancache folgende Infonachricht:

SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.

Diese Meldung wird alle fünf Minuten protokolliert, solange der Cache innerhalb dieses Zeitintervalls geleert wird.

Resultsets

DBCC FREESYSTEMCACHE gibt Folgendes zurück:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Berechtigungen

Erfordert die ALTER SERVER STATE-Berechtigung auf dem Server.

Beispiele

A. Freigeben nicht verwendeter Cacheeinträge aus einem Resource Governor-Poolcache

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;

Weitere Informationen