Eu tenho uma consulta simples em execução no SQL Server 2005
SELECT *
FROM Table
WHERE Col = 'someval'
A primeira vez que executo a consulta pode demorar > 15 secs
. Execuções subseqüentes estão de volta < 1 sec
.
Como faço para o SQL Server 2005 não usar resultados em cache? Eu tentei correr
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
Mas isso parece não ter efeito na velocidade da consulta (ainda < 1 sec
).
sql-server
caching
PaulB
fonte
fonte
Respostas:
Aqui está uma boa explicação. confira.
http://www.mssqltips.com/tip.asp?tip=1360
Do artigo vinculado:
fonte
Oito maneiras diferentes de limpar o cache do plano
1. Remova todos os elementos do cache do plano para toda a instância
Use isso para limpar o cache do plano com cuidado. A liberação do cache do plano faz com que, por exemplo, um procedimento armazenado seja recompilado em vez de reutilizado a partir do cache. Isso pode causar uma diminuição repentina e temporária no desempenho da consulta.
2. Limpe o cache do plano para toda a instância e suprima a mensagem de conclusão regular
"Execução do DBCC concluída. Se o DBCC imprimiu mensagens de erro, entre em contato com o administrador do sistema."
3. Limpe o cache do plano ad hoc e preparado para toda a instância
4. Limpe o cache do plano ad hoc e preparado para um pool de recursos
5. Limpe todo o cache do plano para um pool de recursos
6. Remova todos os elementos do cache do plano para um banco de dados (não funciona no SQL Azure)
7. Limpe o cache do plano para o banco de dados atual
8. Remova um plano de consulta do cache
Fonte 1 2 3
fonte
Embora a questão seja um pouco antiga, isso ainda pode ajudar. Estou com problemas semelhantes e o uso da opção abaixo me ajudou. Não tenho certeza se essa é uma solução permanente, mas está corrigindo-a por enquanto.
Então sua consulta será assim
fonte
select * from Table where Col = 'someval' OPTION (OPTIMIZE FOR UNKNOWN)
O valor que você especifica para a memória do servidor não é importante, desde que seja diferente do atual.
Aliás, o que causa a aceleração não é o cache de consulta, mas o cache de dados.
fonte
Note que nem
DBCC DROPCLEANBUFFERS;
nemDBCC FREEPROCCACHE;
há suporte no SQL Azure / SQL Data Warehouse.No entanto, se você precisar redefinir o cache do plano no SQL Azure, poderá alterar uma das tabelas da consulta (por exemplo, basta adicionar e remover uma coluna); isso terá o efeito colateral de remover o plano do cache .
Pessoalmente, faço isso como uma maneira de testar o desempenho da consulta sem precisar lidar com planos em cache.
Mais detalhes sobre o cache de procedimentos do SQL Azure aqui
fonte