[firebase-br] CPU 100% em INSERT
Evandro
vansiqq em oi.com.br
Seg Jul 11 12:05:48 -03 2005
Pessoal,
Tô com um pequeno probleminha, em um trecho de código simples, mas q me vem torrando a paciência. É o seguinte:
É um processo batch em que o sistema lê um TXT vindo de cada catraca de acesso e insere os dados no Firebird.
tenho uma IBSQL com a seguinte instrução:
SQL.Clear;
SQL.Add('INSERT INTO SAFCONC');
SQL.Add('(RELOGIO, CRACHA, DATA, HORA, FUNCAO, SEQUENC)');
SQL.Add('VALUES ( :RE, :CR, :DT, :HR, :FU+'",:SE) );
O código é o seguinte:
begin
application.processMessages;
self.repaint;
end;
if not trInsConc.InTransaction then
trInsConc.StartTransaction;
try
with ibqryInserirSafConc do
begin
Close;
Params[0].AsFloat := SEQ1;
Params[1].AsString := RE;
Params[2].AsFloat := CR1;
Params[3].AsString := DT;
Params[4].AsString := HR;
Params[5].AsString := TP;
Params[6].AsSmallInt := StrToInt(vLocalRel);
end;
ibqryInserirSafConc.ExecSQL;
Inc( iCount );
if iCount <= i_qtd_registros_pra_commit then
trInsConc.CommitRetaining
else
begin
iCount := 0;
trInsConc.Commit;
end;
i_qtd_registros_pra_commit é uma variável onde posso informar o número de registros para dar o commit. o padrão é 500.
Mas ja tentei de 1 a 2000 e o resultado é o mesmo. A rotina começa bem e a medida que o processo adianta toda a rede vai se degradando, o consumo de CPU do cliente e do servidor chega a 100% e finalmente estou com cinco portarias totalmente inoperantes.
Este é um dos modulos de um sistema de controle de acesso em uso em uma empresa de comunicações, onde se controla o acesso de 5 portarias distribuidas na cidade.
Utilizo neste sistema, Delphi 5 com Firebird 1.5 e uso a paleta IBX.
Qualquer ajuda será bem vinda.
[]'s a todos e uma ótima semana.
Evandro Siqueira
Programador
Recife/PE
Mais detalhes sobre a lista de discussão lista