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;