Usuário com melhor resposta
Performane Procedure

Pergunta
-
Bom dia
Gostara da opnião de vocês
Estou dando uma olhada em uma procedure que detro dela a mesma invoca diversas procedures do ponto de vista perfomance este encadeamento pode gerar perda segunificatva de performance locks etc ... ?
Outra dúvida que tenho e que em divrsos momento o código da procedure menciona o comando"WITH
(ROWLOCK)" antes dos updates, quais s ganhos e perda qu posso ter trabalhado no meu código fonte desta maneira.
Agradeço atenção desde já
Att
Anderson
Respostas
-
Oa Anderson,
Em complemento ao Segio, o hint WITH(rowlock) força o bloqueio da coluna ao inves de (paginas, tabelas...) em alguns casos podem ser beneficos, se vc tem muita concorrencia de DML nesta tabela por exemplo o rowlock pode te ajudar.
O fato de ter procedures encadeadas nao significa quer vc terá baixa performance, geralmente querbra-se em outras procedures para facilitar o entendimento da logica e em futuras manutenções, como o sergio comentou o que pode causar lentidao é uso de cursores, instrucoes que não utilizam indices corretos, fragmentacao etc..
Att.
Marcelo Fernandes
MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!- Marcado como Resposta Anderson SP domingo, 25 de outubro de 2009 01:57
Todas as Respostas
-
Anderson,
Inicialmente sobre a performance da sua procedure seria necessário entendermos melhor o seu ambiente para começarmos a identificar algumas situações que estejam forçando esta perda de performance.
Em relação ao comando With, este comando é utilizado para trabalhar com Common Table Expression existente a partir do SQL Server 2005.
O comando Rollback definido antes dos comandos updates, neste caso, tem como função desfazer qual ação realizada no SQL Server que tenha gerado algum tipo de problema, evitando maiores impactos, mas em relação a performance não vejo muito relação.
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA -
Boa noite Anderson,
Sobre a queda de performance relacionada ao encadeamento de procedures, acredito que a perda pode ser bastante significativa, principalmente se a chamada a outras procedures estiver dentro de um cursor.. se possível, uma idéia para minimizar o impacto seria quebrar o código da procedure e colocá-la dentro do próprio corpo da procedure principal; em relação ao hint "with(rowlock") ele é usado para forçar um lock de linha no registro, ao invés de deixar que o SGBD escolha outra algum outro tipo de granularidade (que poderia ser um extend ou tabela, por exemplo)
Abraços,
Sérgio -
Oa Anderson,
Em complemento ao Segio, o hint WITH(rowlock) força o bloqueio da coluna ao inves de (paginas, tabelas...) em alguns casos podem ser beneficos, se vc tem muita concorrencia de DML nesta tabela por exemplo o rowlock pode te ajudar.
O fato de ter procedures encadeadas nao significa quer vc terá baixa performance, geralmente querbra-se em outras procedures para facilitar o entendimento da logica e em futuras manutenções, como o sergio comentou o que pode causar lentidao é uso de cursores, instrucoes que não utilizam indices corretos, fragmentacao etc..
Att.
Marcelo Fernandes
MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!- Marcado como Resposta Anderson SP domingo, 25 de outubro de 2009 01:57
-
Marcelo,
Concordo com você, teriamos que conhecer um pouco sobre as procedures para podemos fazer algum tipo de afirma sobre a perda.
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA