none
Performane Procedure RRS feed

  • 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

    quarta-feira, 17 de junho de 2009 11:36

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
    quinta-feira, 18 de junho de 2009 11:56
    Moderador

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
    quarta-feira, 17 de junho de 2009 18:37
    Moderador
  • 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
    quinta-feira, 18 de junho de 2009 00:38
  • 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
    quinta-feira, 18 de junho de 2009 11:56
    Moderador
  • 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
    quinta-feira, 18 de junho de 2009 14:34
    Moderador