Muito tempo para Efetuar Transacao
16/11/2004
0
WIN2000Server PIV 2.8Ghz H.T.
1GB RAM, 1MB Cache, HD80 GB
FB 1.5 (extensao do arquivo .FDB)
Utilizo componentes DBXpress.
Amigos,
estou tendo problemas em minhas aplicacoes. Muito tempo para Gravar (Commit) apos terminar o WHILE NOT EOF.
meu codigo.
//============= INSTRUCAO DE INSERIR BILHETE
dm.Q1.SQL.Text := ´INSERT INTO BILHETES (´+
´RAMAL, ´+
´TRONCO, ´+
´DATA, ´+
´INICIO, ´+
´DURACAO, ´+
´TEMPOATENDER, ´+
´NUMEROTELEFONE, ´+
´NUMEROTELEFONELIMPO, ´+
´TRANSFERIDA, ´+
´SIGLA, ´+
´CUSTO, ´+
´TIPOLIGACAO, ´+
´CODIGOTRANSACIONADOR, ´+
´IDMUNICIPIO, ´+
´ENTSAI) VALUES (´+
´:RAMAL, ´+
´:TRONCO, ´+
´:DATA, ´+
´:INICIO, ´+
´:DURACAO, ´+
´:TEMPOATENDER, ´+
´:NUMEROTELEFONE, ´+
´:NUMEROTELEFONELIMPO, ´+
´:TRANSFERIDA, ´+
´:SIGLA, ´+
´:CUSTO, ´+
´:TIPOLIGACAO, ´+
´:CODIGOTRANSACIONADOR, ´+
´:IDMUNICIPIO, ´+
´:ENTSAI) ´;
Transacao.TransactionID := 1;
Transacao.IsolationLevel := xilREADCOMMITTED;
dm.Conexao.StartTransaction(Transacao);
while not Dbf1.Eof do begin
linhas desnecessarias de codigo eu removi.
dm.Q1.ParamByName(´RAMAL´).AsString := Ramal;
dm.Q1.ParamByName(´TRONCO´).AsInteger := NumeroTronco;
dm.Q1.ParamByName(´DATA´).AsDate := Data;
dm.Q1.ParamByName(´INICIO´).AsString := Inicio;
dm.Q1.ParamByName(´DURACAO´).AsString := Duracao;
dm.Q1.ParamByName(´TEMPOATENDER´).AsString := TempoAtender;
dm.Q1.ParamByName(´NUMEROTELEFONE´).AsString := NumeroTelefone;
dm.Q1.ParamByName(´NUMEROTELEFONELIMPO´).AsString := TelefoneLimpo;
dm.Q1.ParamByName(´TRANSFERIDA´).AsString := LigacaoTransf;
dm.Q1.ParamByName(´ENTSAI´).AsString := EntSai;
dm.Q1.ParamByName(´SIGLA´).AsString := SiglaServico;
dm.Q1.ParamByName(´CUSTO´).AsCurrency := CustoLigacao;
dm.Q1.ParamByName(´IDMUNICIPIO´).AsInteger := IDMunicipio;
dm.Q1.ParamByName(´TIPOLIGACAO´).AsString := TipoLigacao;
dm.Q1.ParamByName(´CODIGOTRANSACIONADOR´).AsInteger := CodigoTransacionador;
dm.Q1.ExecSQL();
Dbf1.Next;
Inc(QdeReg, 1);
end;
=======
= até aqui, roda super bem e rapido =
dm.Conexao.Commit(Transacao);
== mas para executar esse comando acima, chega a demorar 10 minutos travando o terminal server.
e mais, somente eu estou usando o banco neste instante, nem tem problemas de updates concorrentes no banco.
MessageDlg(´Pronto´, mtInformation, [mbok], 0);
== fim ==
O que poderia ser ?
as vezes, essa transacao ´dm.Conexao.Commit(Transacao)´ demora certa de 10 minutos para ser efetivada, q loucura.
Qde. de Registros no banco: 40.000 +-
Tamanho do .FDB: 15MB.
Pouquissimos indices.
Alguem tem alguma ideia para ajudar ?
Pedih
Posts
16/11/2004
Gandalf.nho
17/11/2004
Pedih
componente: dm.Q1.ExecSQL(); (TSQLQuery)
em media: 1.000 registros no momento do commit.
17/11/2004
Gandalf.nho
20/11/2004
Pedih
Amigo, 1.000 registros num commit acho que é aceitável, vc nao ?
Clique aqui para fazer login e interagir na Comunidade :)