Inquiridor
Problema de performance no SQL Server 2012

Pergunta
-
Uma stored procedure que filtra 7.000 registros em uma tabela com 100.000 registros e atualiza um único campo, executa em menos de 1 segundo no SQL Server 2008 Express.
A mesma SP nesse mesmo banco de dados "backupeado" e restaurado no SQL Server 2012 Standard está demorando 2 minutos para executar.
O que pode estar causando esse problema?
- Tipo Alterado Heloisa Pires sexta-feira, 29 de junho de 2012 17:08
- Editado Cláudio Más quarta-feira, 4 de julho de 2012 21:14
- Tipo Alterado Roberto F FonsecaModerator sexta-feira, 6 de julho de 2012 20:40 É uma pergunda, não uma discussão.
Todas as Respostas
-
Claudio,
Quando ha uma atualização de base, é comum acontecer isso, faça isso:
- Atualize as estatisticas;
- Recrie todos os indices (Rebuild).
Seu problema deverá ser solucionado.
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Sugerido como Resposta Roberto F FonsecaModerator terça-feira, 26 de junho de 2012 13:09
-
Fabrizzio,
Atualizei as estatísticas (SP_UPDATESTATS 'resample') e recriei os índices, mas não adiantou. Continua exatamente da mesma forma.
Alguma outra idéia?
- Editado Cláudio Más terça-feira, 26 de junho de 2012 13:56
-
Claudio,
É o mesmo hardware?
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
-
-
Cláudio, se quiser mandar, posso testar.
Mas se o hardware não é o mesmo, isso pode ter influência. Além da questão das configurações de um servidor para outro. Então não sei se será fácil descobrir o porquê dessa diferença.
Você percebeu piora de performance também em outros pontos ou somente nesta procedure?
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta. -
Claudio,
AS queries podem estar utilizando planos de execução diferentes. Veja os planos nos dois servidores e compare para ver onde está a diferença.
Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008
-
Cláudio,
mudança de infra, instalação nova, a gente sempre deixa algo pra trás. Pegando ganho no que o Fabrizzio falou, eu primeiro faria o Reuild dos índices e só depois atualizaria as estatísticas, pois o rebuild por si só já as atualiza, depois você roda o updatestats que ele vai filtrar só o que é necessário atualizar.
Outro ponto é verificar se não está tendo contenção em sua tempDB, veja pela procedure SP_WHOISACTIVE que tem disponível na net se nao está tendo alguns PFS e SGAM lá, provavelmente seu arquivo de dados não está dividido e o gargalo está sendo lá.
Outra coisa, pode ser que sua querie, de alguma maneira está parametrizada para trabalhar corretamente com o R2 e você deixou o Compability Level do 2012. Mude essa opção também a nível de "chute" e veja se a opção Parametrization está igual nos dois bancos, pois pode ser que esteja Forced na instância do 2008 e está SIMPLE no 2012.
- Sugerido como Resposta Leonardo Pedroso Costa quinta-feira, 12 de julho de 2012 00:07
-
Roberson, provavelmente a diferença tem a ver com as configurações nos servidores.
Por enquanto, o problema reside nessa procedure.
De qualquer maneira, gostaria que testasse. Mas o projeto está "paralisado" até agosto, então vou deixar para enviar o banco de dados mais para o final do mês (estarei ausente até lá). Obrigado.
-
-
-
-
-
Tentei todas as sugestões, sem sucesso.
Criei um programa em VB para abrir e atualizar um recorset ADO, no lugar da stored procedure, e o resultado foi o mesmo: dois minutos e meio para executar.
Tanto no SQL 2008 Express quanto em outra instância do SQL Server 2012 Standard na mesma máquina, o problema não ocorre. Somente no servidor novo.
- Editado Cláudio Más segunda-feira, 6 de agosto de 2012 12:05