Um de nossos clientes acabou de atualizar para um novo servidor.
Para um procedimento armazenado específico, a primeira vez que você o executa, leva mais de três minutos para ser executado. Execuções subseqüentes são inferiores a 1 segundo.
Isso me leva a acreditar que os três minutos iniciais são basicamente utilizados para o cálculo do plano de execução. Execuções subsequentes, basta usar o plano em cache e executar instantaneamente.
Em nossos bancos de dados de teste, leva cerca de 5 segundos para calcular o plano para o mesmo procedimento.
Não vejo nada de terrível no próprio plano - embora não imagine que seja relevante, pois o plano mostra quanto tempo leva para executar a consulta, não se calcula.
O servidor é um núcleo de 16 com 24 GB de memória. Nenhuma carga pesada de CPU ou memória ocorre.
O que pode estar causando um cálculo tão lento apenas em um banco de dados específico?
Que medidas posso tomar para encontrar a causa do problema?
Editar
Então, eu consegui acessar o servidor e executei a consulta com SET SHOWPLAN_XML ON .
Posso confirmar que o CompileTime da consulta está ocupando 99% do tempo de execução da consulta. O StatementOptmEarlyAbortReason é "TimeOut" , em nosso banco de dados de teste com uma cópia do banco de dados, o motivo é MemoryLimitExceeded.
StatementOptmEarlyAbortReason
?