Durante a nossa analise do desempenho do banco de dados, implementamos algumas melhorias mais complexas que, chegamos ao ponto em que precisávamos reiniciar o cache do servidor, para analisar como nossas alterações seriam aplicadas e seu comportamento.
Enquanto estávamos discutindo sobre reiniciar ou não os servidores, o desenvolvedor da organização, imediatamente correu para o Management Studio (SSMS) e escreveu o seguinte comando.
1
| DBCC FREEPROCCACHE --não execute isso rs ... |
Neste momento solicitamos para parar imediatamente, e explicamos que se ele executasse o comando acima no servidor, ele descartaria o cache do plano para TODOS o banco de dados no servidor e isso é algo não recomendado. Se o cache for descartado para todo o servidor, durante o horário comercial, o SQL Server estará sob pressão para recriar todos os planos e também poderá afetar negativamente o desempenho. Como havíamos feito melhorias em um único banco de dados e nossa necessidade era limpar o cache para um único banco de dados não seria necessário reiniciar completamente todo o cache, portanto, executamos pontualmente para remover os planos em cache para um único banco de dados.
1
2
3
|
DECLARE @dbid INT = DB_ID ();
|
Se vocês estiverem usando o SQL Server 2016 ou versão superior (uaaaaaAAAAAAalll rs), também poderá executar o seguinte comando:
1
2
|
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE |
Bem, é isso. É muito simples remover o cache de um único banco de dados, sugiro fortemente que você o faça apenas nas condições extremas, pois na maioria dos casos, você não precisa dele. E podem causar problemas de performance pontual de acordo com a disponibilidade e performance desta base.