Que problemas indicam um spool ansioso

27

Atualmente em execução no SQL Server 2008 R2

Estou tentando aumentar o desempenho de uma instrução UPDATE. Percebo uma operação Epool Spool no showplan aparecendo. Meu entendimento das operações de spool é bastante básico - elas criam armazenamento temporário para a tabela durante a atualização.

Eu também sei que, enquanto eles estão impedindo tempos de execução muito piores, os spools ansiosos geralmente são indicativos de problemas subjacentes à estrutura da tabela e / ou instruções de consulta.

Minha pergunta é bem simples: quando você vê um spool ansioso no seu plano de consulta, quais problemas você procura resolver primeiro?

Analisarei todas as partes do nosso sistema para aumentar o desempenho - só estou procurando orientação sobre onde devo começar.

Nick Vaccaro
fonte
Você pode mostrar o plano? Carretéis podem significar muitas coisas diferentes.
usr
E outro casal de casos em que isso pode aparecer em um UPDATEé se a tabela tem uma auto-referência de chave estrangeira ou acessa UDFs que fazem acesso a dados ou não são esquema obrigado
Martin Smith

Respostas:

18

Estou tentando aumentar o desempenho de uma instrução UPDATE. Percebo uma operação Epool Spool no showplan aparecendo.

O Eager Spools pode ser adicionado por vários motivos, inclusive para a Proteção de Halloween , ou para otimizar a E / S ao manter índices não clusterizados .

Sem ver (nem mesmo uma imagem) do plano de execução, é difícil ter certeza de quais desses cenários podem ser aplicados no seu caso particular. Se a sensibilidade dos dados for uma preocupação, considere fazer o upload de uma versão anônima do plano para análise usando o SentryOne Plan Explorer .

Pode ser que o Eager Spool não seja o que você deveria se concentrar; muitos fatores influenciam o desempenho real das consultas que alteram os dados. Se você estiver baseando seus esforços de ajuste no custo percentual estimado mostrado para o operador Eager Spool, considere que essas estimativas são geradas usando um modelo que não se destina a corresponder aos recursos de sua configuração de hardware específica.

Paul White diz que a GoFundMonica
fonte
2

Às vezes, o carretel ansioso pode ser evitado quando outros operadores de bloqueio estão no local - por exemplo. Portanto, é uma boa idéia garantir que os dados já estejam classificados no momento em que atingem esse estágio. (índices ausentes, talvez?)

Se existe para a proteção do Dia das Bruxas, então, como os outros caras disseram, há pouco que você pode fazer.

John Alan
fonte