Remove todos os elementos do cache do plano, remove um plano específico do cache do plano, por meio da especificação de um identificador de plano ou identificador SQL ou remove todas as entradas de cache com um pool de recursos especificado.
DBCC FREEPROCCACHE não desmarca as estatísticas de execução para procedimentos armazenados compilados de modo nativo. O cache de procedimento não contém informações sobre procedimentos armazenados compilados de modo nativo. Todas as estatísticas de execução coletadas de execuções de procedimento serão exibidas nas DMVs de estatísticas de execução: sys.dm_exec_procedure_stats (Transact-SQL) e sys.dm_exec_query_plan (Transact-SQL).
Sintaxe para SQL Server:
Sintaxe para Azure Synapse Analytics e PDW (Analytics Platform System):
plan_handle identifica exclusivamente um plano de consulta de um lote que foi executado e cujo plano reside no cache de planos. plan_handle é varbinary(64) e pode ser obtido dos seguintes objetos de gerenciamento dinâmico:
sql_handle é o identificador SQL do lote a ser apagado. sql_handle é varbinary(64) e pode ser obtido dos seguintes objetos de gerenciamento dinâmico:
pool_name é o nome de um pool de recursos do Resource Governor. pool_name é sysname e pode ser obtido por meio da consulta da exibição de gerenciamento dinâmico sys.dm_resource_governor_resource_pools.
Para associar um grupo de carga de trabalho do Resource Governor a um pool de recursos, consulte a exibição de gerenciamento dinâmico sys.dm_resource_governor_workload_groups. Para obter informações sobre o grupo de carga de trabalho durante uma sessão, consulte a exibição de gerenciamento dinâmico sys.dm_exec_sessions.
Limpe o cache de planos de consulta de cada nó de Computação. Este é o valor padrão.
Limpe o cache de planos de consulta de cada nó de Computação e do nó de Controle.
Começando pelo SQL Server 2016 (13.x), o ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE para limpar o cache (plano) de procedimento para o banco de dados no escopo.
Use DBCC FREEPROCCACHE para limpar o cache do plano cuidadosamente. A limpeza do cache (plano) de procedimento faz com que todos os planos sejam removidos e as execuções de consulta de entrada compilarão um novo plano, em vez de reutilizar um plano anteriormente armazenado em cache.
Isso pode causar uma queda repentina e temporária no desempenho da consulta conforme o número de novas compilações aumenta. Para cada armazenamento em cache limpo no cache de planos, o log de erros do SQL Server conterá a seguinte mensagem informativa:
As seguintes operações de reconfiguração também são limpas no cache de procedimento:
contagem de bucket do cache de verificação de acesso
cota de cache de verificação de acesso
memória para criar índice
máximo de threads de trabalho
limite de custo do administrador de consulta
espera da consulta
Quando a cláusula WITH NO_INFOMSGS não for especificada, DBCC FREEPROCCACHE retornará: "Execução do DBCC concluída. Se o DBCC imprimiu mensagens de erro, entre em contato com o administrador do sistema".
Aplica-se a: SQL Server, PDW (Analytics Platform System)
Aplica-se a: Azure Synapse Analytics
Requer associação à função de servidor fixa DB_OWNER.
Comentários gerais sobre Azure Synapse Analytics e PDW (Analytics Platform System)
Vários comandos DBCC FREEPROCCACHE podem ser executados simultaneamente. No Azure Synapse Analytics ou PDW (Analytics Platform System), a limpeza do cache de planos pode causar uma queda temporária no desempenho da consulta conforme as consultas de entrada compilam um novo plano, em vez de reutilizar um plano previamente armazenado em cache.
DBCC FREEPROCCACHE (COMPUTE) apenas faz com que SQL Server recompile consultas quando elas são executadas nos nós de Computação. Ele não faz com que Azure Synapse Analytics ou PDW (Analytics Platform System) recompile o plano de consulta paralela gerado no nó de Controle. DBCC FREEPROCCACHE pode ser cancelado durante a execução.
Limitações e restrições de Azure Synapse Analytics e PDW (Analytics Platform System)
DBCC FREEPROCCACHE não pode ser executado em uma transação. Não há suporte para DBCC FREEPROCCACHE em uma instrução EXPLAIN.
Metadados de Azure Synapse Analytics e PDW (Analytics Platform System)
Uma nova linha é adicionada à exibição do sistema sys.pdw_exec_requests quando DBCC FREEPROCCACHE é executado.
O exemplo a seguir apaga um plano de consulta do cache do plano especificando o identificador do plano de consulta. Para assegurar que a consulta de exemplo esteja no cache do plano, a consulta será executada primeiro. As exibições de gerenciamento dinâmico sys.dm_exec_cached_plans e sys.dm_exec_sql_text são consultadas para retornar o identificador de plano da consulta.
O valor do identificador do plano do conjunto de resultados é inserido na instrução DBCC FREEPROCACHE para remover apenas o plano em questão do cache do plano.
B. Limpando todos os planos do cache do plano
O exemplo a seguir limpa todos os elementos do cache do plano. A cláusula WITH NO_INFOMSGS é especificada para impedir a exibição da mensagem informativa.
C. Limpando todas as entradas do cache associadas a um pool de recursos
O exemplo a seguir limpa todas as entradas do cache associadas a um pool de recursos especificado. A exibição sys.dm_resource_governor_resource_pools é consultada primeiro para obter o valor de pool_name.
D. Exemplos de sintaxe básica de DBCC FREEPROCCACHE
O exemplo a seguir remove todos os caches de planos de consulta existentes dos nós de Computação. Embora o contexto seja definido como UserDbSales, os caches de plano de consulta do nó de Computação de todos os bancos de dados serão removidos. A cláusula WITH NO_INFOMSGS impede a exibição de mensagens informativas nos resultados.
O exemplo a seguir traz os mesmos resultados do exemplo anterior, exceto que as mensagens informativas serão exibidas nos resultados.
Quando mensagens informativas forem solicitadas e a execução for bem-sucedida, os resultados da consulta terão uma linha por nó de Computação.