As outras respostas estão corretas sobre os motivos para não executar DBCC FREEPROCCACHE
. No entanto, também existem alguns motivos para fazê-lo:
- Consistência
Se você deseja comparar duas consultas ou procedimentos diferentes que estão tentando fazer a mesma coisa de maneiras diferentes, é provável que cheguem às mesmas páginas. Se você executar ingenuamente a consulta nº 1 e a consulta nº 2, a segunda poderá ser muito mais rápida, simplesmente porque essas páginas foram armazenadas em cache pela primeira consulta. Se você limpar o cache antes de cada execução, eles começarão em pé de igualdade.
Se você quiser testar o desempenho do cache quente, execute as consultas várias vezes, alternando e descartando as primeiras execuções. Média dos resultados.
- Pior desempenho
Digamos que você tenha uma consulta que leva um segundo em um cache quente, mas um minuto em um cache frio. Uma otimização que torna a consulta na memória 20% mais lenta, mas a consulta vinculada à IO 20% mais rápida pode ser uma grande vitória: durante operações normais, ninguém notará os 200 ms extras em circunstâncias normais, mas se algo forçar uma consulta a executar no disco, levar 48 segundos em vez de 60 pode salvar uma venda.
Isso é menos preocupante em sistemas modernos com dezenas de gigabytes de memória e armazenamento relativamente rápido de SAN e SSD, mas ainda importa. Se algum analista executar uma consulta massiva de varredura de tabela no banco de dados OLTP, que elimina metade do cache do buffer, as consultas eficientes em armazenamento permitirão que você recupere a velocidade mais rapidamente.
DBCC FLUSHPROCINDB
Ocorreu um erro ao executar : Um número incorreto de parâmetros foi fornecido à instrução DBCC.