SQL Server – DBCC FREEPROCCACHE (plan_handle)

Problemas de performance em ambiente de produção, pelas características particulares do próprio ambiente, acabam por tornar mais assertivas ações, desde que as mesmas sejam tomadas no próprio ambiente.
Ao analisar planos de execução para a query problema, não levando em consideração a query em sí (muitas vezes não temos acesso a construção da mesma), hipoteticamente identificamos carência de determinado índice ou atualização/criação de determinada estatística.
O fato é que o plano foi montado para a query em sua primeira execução, e ficará em cache até que situações muito específicas ocorram com a estrutura do dado, da query em sí, ou, esgote-se o fim do tempo de vida deste cache (tema para outro post).
Logo, após criarmos o índice e/ou atualizarmos nossa estatística, não veremos impacto na performance até que um novo plano de execução seja construído, onde o optimazer levará em conta tais melhorias.
A utilização indiscriminada do DBCC FREEPROCCACHE, como estamos habituados a realizar em ambientes de teste/desenvolvimento, não pode/é aceitável em ambiente de produção pois causa o descarte de todo o cache de planos. Ou seja, todas as querys (e não apenas a nossa query problema) deverão ter seu plano reconstruido assim que executadas novamente.
Portanto, o correto é o descarte do plano específico de nossa query problema.

Mão à obra!

-- i)  identificamos o nosso plano (plan_handle) via nossa query problema;
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%'

-- ii) utilizamos o dbcc freeproccache, com a entrada de parametro "plan_handle" 
-- que realizará o descarte do plano de execução único identificado pelo parametro; 
DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000)

T+

Referencia:
http://technet.microsoft.com/en-us/library/ms174283.aspx

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s