none
Problemas em Insert com alto numero de registros RRS feed

  • Discussão Geral

  • Prezados, boa noite!!

    No momento encontro me na seguinte situação:

    Cenario:
    " O Cliente possui uma rotina de fechamento onde é emitido 100.000 arrecadações à seus Clientes. Essas Arrecadações deverão conter numero de Lote Unico para melhor controle e dimensão."

    Solução:
    Utilizaremos 2 Tabelas: LoteGeraMovimento e Arrecadacao

    Para ganharmos dinamica foi criado um type Table onde estaremos executando todo o pacote em uma procedure

    Problema:
    A procedure leva em torno de 4 minutos para temirnar sua execução. Ao abrir a transação para a Inserção dos Dados me ocasiona problemas com os usuarios pois ficam "travados" aguardando o termino da execução da Procedure.

    Pergunta:
    Como fazer esta rotina, que não impacte nos outros departamentos?
    Deveria executar esta procedure "em partes"
    Consigo executar uma transação onde não trave o acesso do usuario à Tabela?

    Certo da atenção de todos
    • Tipo Alterado Marcos SJ quinta-feira, 10 de dezembro de 2015 13:51 Threads de "How to" serão modificadas para discussão geral
    quarta-feira, 9 de dezembro de 2015 20:38

Todas as Respostas

  • Marcelo,

    Acredito que você possa trabalhar em duas frentes.

    1. Avaliar o nível de isolamento utilizado nas leituras (dos outros departamentos);

    2. Avaliar otimização do processo de INSERT.

    Referências de nível de isolamento:

    https://technet.microsoft.com/pt-br/library/ms189122(v=sql.105).aspx

    https://msdn.microsoft.com/pt-br/library/ms173763(v=sql.120).aspx

    Referência para performance de operações de inserção: 

    https://technet.microsoft.com/pt-br/library/ms190421(v=sql.105).aspx


    • Editado FLauffer quinta-feira, 10 de dezembro de 2015 06:03 Melhor visualização
    quinta-feira, 10 de dezembro de 2015 06:02
  • flauffer, obrigado pela atenção, mas ainda não é o que necessito, continuarei pesquisando e procura

    Abs

    quinta-feira, 10 de dezembro de 2015 11:10
  • Marcelinho,

    Por acaso você esta utilizando algum tipo de table hint ou query hint?

    Quando você se referi a abrir a transação para o Insert você esta trabalhando com transações implícitas ou explícitas?

    De que forma esta procedure esta sendo executada por sua aplicação?


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 10 de dezembro de 2015 14:00
  • Boa tarde Junior Galvão, antes de tudo quero agradecer sua atenção sobre meu assunto.

    Bom, até o momento em que lhe respondo não conheço nada sobre Table hint e/ou query hint, mas vou dar uma pesquisada. Já a transação é chamada pela aplicação atraves de uma Stored Procedure enviando como paramentro uma Tabela

    Abs

    terça-feira, 22 de dezembro de 2015 15:10
  • Marcelinho,

    Através da aplicação a Stored Procedure é chamado, você esta passando a tabela como parâmetro!!! Você esta passando os valores de uma determinada coluna?


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 22 de dezembro de 2015 16:23