COMO: Utilizar KEEPFIXED PLAN para desativar recompilações de procedimento armazenado

Traduções deste artigo Traduções deste artigo
ID do artigo: 276220 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Em algumas situações onde os procedimentos armazenados são recompilados, o custo de recompilação pode superam o benefício que é derivado de fazer isso. Observe que como SQL Server Service Pack 2 (SP2) e anteriormente não oferecem suporte a recompilação de nível de instrução, todo o procedimento armazenado deve ser recompilado quando uma recompilação é disparada. Portanto, o número de recompilações são disparados durante a execução de um procedimento armazenado e o comprimento do procedimento armazenado, às vezes, pode aumentar a duração geral da execução do procedimento armazenado.

A partir do SQL Server 7.0 SP3, uma nova dica de consulta, KEEPFIXED PLAN , foi introduzida para ajudar em situações onde o custo de recompilação é mais do que o custo de usar o plano existente.

A dica de consulta KEEPFIXED PLAN força o otimizador de consulta nunca recompilar uma consulta por causa de alterações nas estatísticas ou alterações de coluna indexada (por exemplo, atualização, excluir ou inserir). Para obter informações adicionais sobre como solucionar problemas de recompilação de procedimento armazenado, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
243586INF: Troubleshooting recompilação do procedimento armazenado

Código de exemplo que usa KEEPFIXED PLAN dicas

O código de exemplo desta seção é do seguinte artigo:
243586INF: Troubleshooting recompilação do procedimento armazenado
   drop procedure RowModifications 
   go
   create procedure RowModifications as
   -- assume SomeTable exists with the same definition as #t, 
   -- and has over 1000 rows
   create table  #t (a int )
   select * from  #t
   insert  #t select * from retest
   select count(*) from #t  where a = 37
   --option (keepfixed plan)
   go
   exec RowModifications
   go
   exec RowModifications
   go 
 
				
Para a execução do procedimento RowModifications segunda, o código a seguir faz com que a recompilação:
  select count(*) from #t where a = 37
				
se você usar este código:
Option (keepfixed plan)
				
nessa consulta, a consulta não causa a recompilação novamente:
select count(*) from #t  where a = 37 option (keepfixed plan) 
				
Observação essa dica de consulta é aplicada no nível de instrução e não afeta o escopo do procedimento armazenado todo. Se desejar que esta opção para afetar várias instruções em um procedimento armazenado, cada instrução deve implementar a dica do SQL Server está sendo aplicada a um comportamento. Essa dica não está disponível para o SQL Server 7.0 Service Pack 2 (SP2) ou anterior.

Propriedades

ID do artigo: 276220 - Última revisão: quarta-feira, 19 de julho de 2006 - Revisão: 5.4
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
Palavras-chave: 
kbmt kbhowtomaster kbinfo KB276220 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 276220

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com