DBCC FREESYSTEMCACHE (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

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.

Convenções de sintaxe Transact-SQL

Syntax

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 com suporte.

  • 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_resource_governor_resource_pools;
    

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. Após a execução de DBCC FREESYSTEMCACHE WITH MARK_IN_USE_FOR_REMOVAL, as entradas criadas no cache não são afetadas.

NO_INFOMSGS

Suprime todas as mensagens informativas.

Comentários

A execução de DBCC FREESYSTEMCACHE limpa o cache de plano 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 armazenamento em cache limpo no cache de planos, o log de erros do 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

O DBCC FREESYSTEMCACHE retorna:

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

Permissões

Exige a permissão ALTER SERVER STATE no servidor.

Exemplos

a. Remover as entradas no cache não usadas de um cache do pool do Resource Governor

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. Liberar as entradas dos respectivos caches quando elas deixam de ser usadas

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;

Confira também