none
Congestionamento no Banco de Dados RRS feed

  • Pergunta

  • Olá a todos.

    Na empresa que trabalho possuimos um sistema em ASP.Net/C# que foi implantado em uma empresa que possuia um SAP. Este SAP é responsável pela criação de Contratos que precisam ser enviados para o banco de dados do nosso sistema. Para este envio foi criado um Integrador Sistema x SAP em WinForms/C# que recebe um XML (com +/- 25 mil registros de contratos) passado pelo SAP e inseri cada um desses registros no Banco de dados do Sistema (SQL Server 2000). O Problema: essa Integração deve ser realizada obrigatóriamente por volta do meio-dia (por requisição da empresa contratante), nesse horário os funcionários estão utilizando o nosso sistema e realizando registros e modificações em contratos. Como esse momento o Integrador está lendo o XML e realizando as inserções no BD do nosso sistema, os funcionários que estão utilizando-o, tem problemas com timeout e muita demora no acesso ao BD enquanto o Integrador está inserindo os contratos.

    A estrutura da empresa é formada por um servidor de aplicação que roda nosso sistema com 2 GB de ram e processador de 2 núcleos e o servidor de banco com a mesma especificação mas com 4 GB de ram. Ambos usam Windows Server 2003

    Se alguém tiver uma sujestão para resolver este problema, desde já agradeço.

    Abraço.

    • Movido Gustavo Maia Aguiar segunda-feira, 19 de abril de 2010 14:13 (De:SQL Server - Desenvolvimento Geral)
    segunda-feira, 19 de abril de 2010 12:13

Respostas

  • Gustavo,

    Eu tive um problema semelhante com um sistema contábil aqui na empresa. Em alguns dias da semana, eram efetuadas cargas enormes que travavam o banco, tanto para a carga como também para os usuários. Ao identificar que o problema ocorria com inserções de registros, eu fiz um teste gerando um Maintenance Plan que dava um reorg de data e índices durante a madrugada diariamente. Ao invés de deixar o reorg configurado para 10 % de área livre por página, deixei-o com 30 %. Dessa forma, ao inserir registros, o sql passa a criar menos páginas. E ao dar um select, o usuário acaba encontrando seus dados em páginas não locadas mais frequentemente. Eu nunca mais tive nenhuma reclamação dos usuários.

    Então se o seu caso for semelhante, vale a pena fazer essa tentativa...

    Eduardo

    • Marcado como Resposta Gustavo Fiaschi quinta-feira, 8 de julho de 2010 12:32
    quinta-feira, 22 de abril de 2010 16:45

Todas as Respostas

  • Olá Gustavo,

    Sugiro aplicar alguns contadores do performance monitor, referente as suspeitas que sua equipe tem, a partir deste ponto, identificar o problema e se for o caso postar aqui a origem do mesmo, pois, esta muito vago o que pode ser o problema, somente analisando os contadores se pode pegar o gargalo.

    Pode ser o disco, pois esta evidente o uso de arquivos, contudo, dê uma olhada na conexão, objetos abertos, limite de conexões abertas ou algo referente a conexão.

    ate mais


    Tornar o simples complicado é facil, tornar o complicado simples é criatividade, vontade e conhecimento
    segunda-feira, 19 de abril de 2010 14:11
  • Lázaro,

    Acredito tambem que o consumo de memória deva estar lendo, devido a quantidade de registro que estão sendo lidos para posterior gravação no disco.

    Os contadores de memória também poderiam ajudar.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    segunda-feira, 19 de abril de 2010 19:33
    Moderador
  • Gustavo,

     

    O seu principal problema não está no Banco de Dados, mas no processo que vocês estão utilizando. A primeira coisa é evitar uma importação de grande escala no meio do dia. Pelo que entendi, o negócio requer uma importação dessas, então o ideal seria fazer somente uma importação DELTA (Somente das alterações). Para isso, o processo de extração do SAP deverá ser alterado.

    Outra idéia é utilizar um TXT ao invés de um XML e executar a importação dos dados via BULK COPY.

    Essas são algumas sugestões que posso dar ä distãncia e sem estar em contato com o sistema.

    Juliano HOrta

    terça-feira, 20 de abril de 2010 23:56
  • Gustavo,

    Eu tive um problema semelhante com um sistema contábil aqui na empresa. Em alguns dias da semana, eram efetuadas cargas enormes que travavam o banco, tanto para a carga como também para os usuários. Ao identificar que o problema ocorria com inserções de registros, eu fiz um teste gerando um Maintenance Plan que dava um reorg de data e índices durante a madrugada diariamente. Ao invés de deixar o reorg configurado para 10 % de área livre por página, deixei-o com 30 %. Dessa forma, ao inserir registros, o sql passa a criar menos páginas. E ao dar um select, o usuário acaba encontrando seus dados em páginas não locadas mais frequentemente. Eu nunca mais tive nenhuma reclamação dos usuários.

    Então se o seu caso for semelhante, vale a pena fazer essa tentativa...

    Eduardo

    • Marcado como Resposta Gustavo Fiaschi quinta-feira, 8 de julho de 2010 12:32
    quinta-feira, 22 de abril de 2010 16:45