DBCC FREESYSTEMCACHE (Transact-SQL)

Aplica-se a: simSQL Server (todas as versões compatíveis) SimBanco de Dados SQL do Azure SimInstância Gerenciada do Azure SQL

Libera todas as entradas não utilizadas de todos os caches. De forma pró-ativa, o Mecanismo de Banco de Dados do SQL Server limpa em segundo plano as entradas de cache para tornar a memória disponível para entradas atuais. Porém, você pode usar este comando para remover manualmente entradas não usadas de todos os caches ou de um cache de pool do Resource Governor especificado.

Ícone de link do tópico Convenções da sintaxe Transact-SQL

Sintaxe

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

Observação

Para ver a sintaxe do Transact-SQL para o SQL Server 2014 e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

( 'ALL' [,pool_name ] )
ALL especifica todos os caches suportados.
pool_name especifica um cache de pool do Resource Governor. Somente as entradas associadas a esse pool são liberadas. Para listar os nomes de pool disponíveis, execute:

SELECT name FROM sys.dm_os_memory_clerks

A maioria dos caches, mas não todos, pode ser liberada individualmente usando esse comando.

MARK_IN_USE_FOR_REMOVAL
Libera de forma assíncrona as entradas usadas no momento de seus respectivos caches quando elas deixam de ser usadas. As novas entradas criadas no cache não serão afetadas depois que o DBCC FREESYSTEMCACHE WITH MARK_IN_USE_FOR_REMOVAL for executado.

NO_INFOMSGS
Suprime todas as mensagens informativas.

Comentários

A execução de DBCC FREESYSTEMCACHE limpa o cache de planos da instância do SQL Server. A limpeza do cache de planos gera uma recompilação de todos os planos de execução subsequentes e pode provocar uma redução repentina e temporária no desempenho de consultas. Para cada repositório em cache limpo no cache de planos, o log de erros SQL Server contém a seguinte mensagem informativa:

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.

Essa mensagem é registrada a cada cinco minutos, contanto que o cache seja liberado dentro desse intervalo de tempo.

Conjuntos de resultados

DBCC FREESYSTEMCACHE retorna: "execução do DBCC concluída. Se o DBCC imprimiu mensagens de erro, entre em contato com o administrador do sistema".

Permissões

Exige a permissão ALTER SERVER STATE no servidor.

Exemplos

a. Removendo entradas de cache não utilizadas de um cache do pool do Administrador de Recursos

O exemplo a seguir ilustra como limpar caches que são específicos de pool de recursos do Administrador de Recursos.

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

B. Removendo entradas de seus respectivos caches quando elas não são mais utilizadas.

O exemplo seguinte usa a cláusula MARK_IN_USE_FOR_REMOVAL para remover entradas de todos os caches atuais quando elas não são mais utilizadas.

DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;  

Consulte Também

DBCC (Transact-SQL)
DBCC FREEPROCCACHE (Transact-SQL)
DBCC FREESESSIONCACHE (Transact-SQL)
Resource Governor