Usuário com melhor resposta
Congestionamento no Banco de Dados

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)
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
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 -
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] -
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
-
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