Como remover um Plano de execução do CachePlan
Pessoal depois de alguns bons dias de férias, volto com uma dica bem legal que li.
Para limpar o PlanCache de uma instância SQL utilizamos o DBCC FREEPROCCACHE, para limpar o cache de apenas um banco específico utilizamos o DBCC FLUSHPROCINDB (<DBID_DO_BANCO>). Mas fica uma pergunta, tem alguma forma de limpar o cache de apenas um determinado comando?
Sim. Podemos utilizar o DBCC FREEPROCCACHE passando o [sys.dm_exec_cached_plans].PlanHandle, por ex:
SELECT cp.plan_handle, st.[text]
FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
O comando acima retorna o PlanHandle dos planos, depois e só passar ele como parâmetro para o FREEPROCCACHE
DBCC FREEPROCCACHE(0x06000500AF643E18B840C234000000000000000000000000)
Créditos para o GlennBerry.
Abraços
Excelente Fabiano !!!!!
Oi Fabiano,Como sempre, no assunto plano de execução, tuning e afins suas postagens são surpreendentes. Já tive necessidade de fazer isso algumas vezes e acabei por eliminar tudo, pois, não sabia que dava para eliminar um só.Abs,
Gran aporte , para inicio de Año , es posible definir el tiempo de vida que un plan de ejecucion se requiere tener en el cache ?
Grande Gustavo, valeu…Anibal, ustedes puedes mirar la tabla sys.dm_exec_query_stats, SELECT t.text, qs.creation_time, qs.last_execution_timeFROM sys.dm_exec_query_stats qsCROSS APPLY sys.dm_exec_sql_text(qs.plan_handle) tWHERE t.text LIKE \’%Comando%\’
E ai Laerte, Valeu cara… valeu tbm pela indicação no seu Blog.Abraço
Cara, em 2019 esse assunto ainda me ajudou muito!
valeu por compartilhar esse conhecimento Fabiano;
Valeu, feliz de saber que o post foi útil…abs