terça-feira, 25 de maio de 2010

Limpando os Buffers de dados e o Cache de Procedures

O tempo de resposta de uma aplicação comercial é um requisito quase que obrigatório para o seu sucesso. Diversos fatores contribuem para a eficiência das aplicações desenvolvidas, a performance das consultas à base de dados é um desses fatores.

Para otimizar as consultas, existem muitas práticas e ferramentas, como índices, filtros, redução do número de colunas, etc. E é muito aconselhável lançar mão do maior número possível.

Muitas vezes, ao implementar consultas, seja via procedure ou comandos ad-hoc, não conseguimos testar sua eficiência, pois, uma vez executada, o SQL Server guarda informações sobre sua execução para otimizar futuros acessos. Este é um poderoso recurso, principalmente para acelerar o retorno das queries executadas com maior frequência.

Para testar a performance real das consultas implementadas, é necessário desconsiderar a ação dos buffers e caches. Para isso, pode-se utilizar os comandos:

-- Limpa cache de procedures
DBCC FREEPROCCACHE

-- Limpa buffers (comandos add-hoc)
DBCC DROPCLEANBUFFERS