DBCC FREESYSTEMCACHE (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Libère les entrées non utilisées de tous les caches. Le Moteur de base de données SQL Server nettoie, en arrière-plan et de manière proactive, les entrées de cache non utilisées afin de libérer de la mémoire pour les entrées actives. Vous pouvez toutefois utiliser cette commande pour supprimer manuellement les entrées non utilisées de tous les caches ou du cache de pool Resource Governor spécifié.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Notes

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 et versions antérieures, consultez Versions antérieures de la documentation.

Arguments

( ’ALL’ [ , pool_name ] )

  • ALL

    Spécifie tous les caches pris en charge.

  • pool_name

    Spécifie un cache de pool du gouverneur de ressources. Seules les entrées associées à ce pool sont libérées. Pour lister les noms de pools disponibles, exécutez :

    SELECT name FROM sys.dm_resource_governor_resource_pools;
    

La plupart des caches, mais pas tous, peuvent être libérés individuellement à l’aide de cette commande.

MARK_IN_USE_FOR_REMOVAL

Libère de manière asynchrone les entrées en cours d'utilisation de leurs caches respectifs une fois qu'elles ne sont plus utilisées. Après l’exécution de DBCC FREESYSTEMCACHE WITH MARK_IN_USE_FOR_REMOVAL, les nouvelles entrées créées dans le cache ne sont pas affectées.

NO_INFOMSGS

Supprime tous les messages d'information.

Notes

L’exécution de DBCC FREESYSTEMCACHE efface le cache du plan pour l’instance de SQL Server. Cette opération entraîne la recompilation de tous les plans d’exécution ultérieurs et peut entraîner une diminution temporaire et brutale des performances des requêtes. Pour chaque mémoire cache effacée du cache du plan, le journal des erreurs de SQL Server contient le message d’information suivant :

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.

Ce message est enregistré toutes les cinq minutes si le cache est vidé au cours de cet intervalle de temps.

Jeux de résultats

DBCC FREESYSTEMCACHE retourne :

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

Autorisations

Nécessite l'autorisation ALTER SERVER STATE sur le serveur.

Exemples

R. Libérer les entrées de cache non utilisées d’un cache de pool Resource Governor

L'exemple suivant illustre comment nettoyer des caches qui sont dédiés à un pool de ressources du gouverneur de ressources spécifié.

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

B. Libérer les entrées de leurs caches respectifs une fois qu’elles ne sont plus utilisées

L'exemple suivant utilise la clause MARK_IN_USE_FOR_REMOVAL pour libérer les entrées de tous les caches actuels une fois qu'elles ne sont plus utilisées.

DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;

Voir aussi