Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:Banco de Dados SQL do
Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Banco de Dados SQL no Microsoft Fabric
Remove todos os elementos do cache de plano, remove um plano específico do cache de plano especificando um identificador de plano ou identificador SQL ou remove todas as entradas de cache associadas a um pool de recursos especificado.
Observação
DBCC FREEPROCCACHE não limpa as estatísticas de execução para procedimentos armazenados compilados nativamente. O cache de procedimentos não contém informações sobre procedimentos armazenados compilados nativamente. Quaisquer estatísticas de execução coletadas de execuções de procedimentos aparecerão nas estatísticas de execução DMVs: sys.dm_exec_procedure_stats (Transact-SQL) e sys.dm_exec_query_plan (Transact-SQL).
Transact-SQL convenções de sintaxe
Sintaxe
Sintaxe do SQL Server e do Banco de Dados SQL do Azure:
DBCC FREEPROCCACHE [ ( { plan_handle | sql_handle | pool_name } ) ] [ WITH NO_INFOMSGS ]
Sintaxe do Azure Synapse Analytics and Analytics Platform System (PDW):
DBCC FREEPROCCACHE [ ( COMPUTE | ALL ) ]
[ WITH NO_INFOMSGS ]
[;]
Arguments
( { plan_handle | sql_handle | pool_name } )
plan_handle identifica exclusivamente um plano de consulta para um lote que foi executado e cujo plano reside no cache do plano. plan_handle é varbinary(64) e pode ser obtido a partir dos seguintes objetos de gerenciamento dinâmico:
- sys.dm_exec_cached_plans
- sys.dm_exec_requests
- sys.dm_exec_query_memory_grants
- sys.dm_exec_query_stats
sql_handle é o identificador SQL do lote a ser limpo. sql_handle é varbinary(64) e pode ser obtido a partir dos seguintes objetos de gerenciamento dinâmico:
- sys.dm_exec_query_stats
- sys.dm_exec_requests
- sys.dm_exec_cursors
- sys.dm_exec_xml_handles
- sys.dm_exec_query_memory_grants
pool_name é o nome de um pool de recursos do Administrador de Recursos. pool_name é sysname e pode ser obtido consultando a sys.dm_resource_governor_resource_pools visualização de gerenciamento dinâmico.
Para associar um grupo de carga de trabalho do Administrador de Recursos a um pool de recursos, consulte o modo de exibição de gerenciamento dinâmico sys.dm_resource_governor_workload_groups . Para obter informações sobre o grupo de carga de trabalho de uma sessão, consulte o modo de exibição de gerenciamento dinâmico sys.dm_exec_sessions .
COM NO_INFOMSGS
Suprime todas as mensagens informativas.
COMPUTAÇÃO
Limpe o cache do plano de consulta de cada nó de computação. Este é o valor padrão.
ALL
Limpe o cache do plano de consulta de cada nó Computação e do nó Controle.
Observação
A partir do SQL Server 2016 (13.x), ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE pode ser usado para limpar o cache de procedimento (plano) para o banco de dados atual.
Observações
Use DBCC FREEPROCCACHE para limpar o cache do plano com cuidado. Limpar o cache de procedimento (plano) 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 qualquer plano armazenado anteriormente em cache.
Isso pode causar uma diminuição súbita e temporária no desempenho da consulta à medida que o número de novas compilações aumenta. Para cada cachestore limpo no cache de plano, o log de erros do SQL Server conterá 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, desde que o cache seja liberado dentro desse intervalo de tempo.
As seguintes operações de reconfiguração também limpam o cache de procedimentos:
- contagem de buckets de cache de verificação de acesso
- Quota de cache de verificação de acesso
- CLR ativado
- Limite de custo para paralelismo
- Encadeamento de propriedade cruzada entre bases de dados
- indexar criar memória
- grau máximo de paralelismo
- Memória máxima do servidor
- Tamanho máximo de repetição de texto
- max threads de trabalho
- Memória mínima por consulta
- min memória do servidor
- limite de custo do administrador de consultas
- Consulta Aguarde
- Tempo limite de consulta remota
- opções do utilizador
No Banco de Dados SQL do Azure, DBCC FREEPROCCACHE atua na instância do mecanismo de banco de dados que hospeda o banco de dados atual ou o pool elástico. A execução DBCC FREEPROCCACHE em um banco de dados de usuário limpa o cache de plano para esse banco de dados. Se o banco de dados estiver em um pool elástico, ele também limpará o cache de plano em todos os outros bancos de dados desse pool elástico. A execução do master comando no banco de dados não tem efeito sobre outros bancos de dados no mesmo servidor lógico. Executar esse comando em um banco de dados usando o objetivo de serviço Basic, S0 ou S1 pode limpar o cache de plano em outros bancos de dados usando esses objetivos de serviço no mesmo servidor lógico.
Conjuntos de resultados
Quando a WITH NO_INFOMSGS cláusula não é especificada, DBCC FREEPROCCACHE retorna:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Permissions
Aplica-se a: SQL Server, Analytics Platform System (PDW)
- Requer a permissão ALTER SERVER STATE no servidor.
Aplica-se a: Banco de Dados SQL do Azure
- Requer associação na função de servidor ##MS_ServerStateManager##.
Aplica-se a: Azure Synapse Analytics
- Requer associação ao db_owner função de servidor fixa.
Comentários para o Azure Synapse Analytics and Analytics Platform System (PDW)
Vários DBCC FREEPROCCACHE comandos podem ser executados simultaneamente.
No Azure Synapse Analytics ou no Analytics Platform System (PDW), limpar o cache do plano pode causar uma diminuição temporária no desempenho da consulta à medida que as consultas de entrada compilam um novo plano, em vez de reutilizar qualquer plano armazenado anteriormente em cache.
DBCC FREEPROCCACHE (COMPUTE) só faz com que o SQL Server recompile consultas quando elas são executadas nos nós de computação. Isso não faz com que o Azure Synapse Analytics ou o Analytics Platform System (PDW) recompile o plano de consulta paralela gerado no nó Controle.
DBCC FREEPROCCACHE pode ser cancelado durante a execução.
Limitações e restrições do Azure Synapse Analytics and Analytics Platform System (PDW)
DBCC FREEPROCCACHE não pode ser executado dentro de uma transação.
DBCC FREEPROCCACHE não é suportado em uma instrução EXPLICAR.
Metadados para o Azure Synapse Analytics and Analytics Platform System (PDW)
Uma nova linha é adicionada à visualização do sys.pdw_exec_requests sistema quando DBCC FREEPROCCACHE é executada.
Exemplos: SQL Server
A. Limpar um plano de consulta do cache de planos
O exemplo a seguir limpa um plano de consulta do cache de plano especificando o identificador de plano de consulta. Para garantir que a consulta de exemplo esteja no cache do plano, a consulta é executada primeiro. As sys.dm_exec_cached_plans exibições de gerenciamento dinâmico e sys.dm_exec_sql_text são consultadas para retornar o identificador de plano para a consulta.
O valor do identificador de plano do conjunto de resultados é então inserido na DBCC FREEPROCACHE instrução para remover apenas esse plano do cache do plano.
USE AdventureWorks2022;
GO
SELECT * FROM Person.Address;
GO
SELECT plan_handle, st.text
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
WHERE text LIKE N'SELECT * FROM Person.Address%';
GO
Aqui está o conjunto de resultados.
plan_handle text
-------------------------------------------------- -----------------------------
0x060006001ECA270EC0215D05000000000000000000000000 SELECT * FROM Person.Address;
(1 row(s) affected)
-- Remove the specific plan from the cache.
DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);
GO
B. Limpar todos os planos do cache de planos
O exemplo a seguir limpa todos os elementos do cache de plano. A WITH NO_INFOMSGS cláusula é especificada para impedir que a mensagem informativa seja exibida.
DBCC FREEPROCCACHE WITH NO_INFOMSGS;
C. Limpar todas as entradas de cache associadas a um pool de recursos
O exemplo a seguir limpa todas as entradas de cache associadas a um pool de recursos especificado. O sys.dm_resource_governor_resource_pools modo de exibição é consultado primeiro para obter o valor para pool_name.
SELECT * FROM sys.dm_resource_governor_resource_pools;
GO
DBCC FREEPROCCACHE ('default');
GO
Exemplos: Azure Synapse Analytics and Analytics Platform System (PDW)
D. Sintaxe básica DBCC FREEPROCCACHE
O exemplo a seguir remove todos os caches de plano de consulta existentes dos nós Compute. Embora o contexto esteja definido como UserDbSales, os caches do plano de consulta do nó Computação para todos os bancos de dados serão removidos. A WITH NO_INFOMSGS cláusula impede que mensagens informativas apareçam nos resultados.
USE UserDbSales;
DBCC FREEPROCCACHE (COMPUTE) WITH NO_INFOMSGS;
O exemplo a seguir tem os mesmos resultados que o exemplo anterior, exceto que as mensagens informativas serão exibidas nos resultados.
USE UserDbSales;
DBCC FREEPROCCACHE (COMPUTE);
Quando mensagens informativas são solicitadas e a execução é bem-sucedida, os resultados da consulta terão uma linha por nó de computação.
E. Conceder permissão para executar DBCC FREEPROCCACHE
O exemplo a seguir dá a permissão de login David para executar DBCC FREEPROCCACHEo .
GRANT ALTER SERVER STATE TO David;
GO