[firebase-br] Dica para fechar a Transacao de Leitura do DBExpress
Pha-Lista
lista em pha.com.br
Qua Jun 22 07:25:05 -03 2005
Sim e Nao,
KeepConnection = False, fica desconectado e conectando a todo momento (sempre que for possivel fechar a conexao), isso pode ocasionar perda de performance.
No exemplo voce pode determinar apartir de quanto tempo comecara as tentativas de fechar a conexao.
No exemplo o evento timer e disparado a cada 5 segundos, mais as tentativas de fechar a conexao comecara apos 30 minutos.
PHA
Nova Odessa / SP - Brazil
-----Mensagem original-----
From: "Francisco Thiago" jeandeadlucky em yahoo.com.br
Date: Tue, 21 Jun 2005 17:56:54 -0300
To: "FireBase" lista em firebase.com.br
Subject: Re: [firebase-br] Dica para fechar a Transacao de Leitura do DBExpress
> Grande dica PHA.....
>
> Mas não teria o mesmo efeito de um KeepConnection = False?
>
> []'s
>
> Francisco Thiago de Almeida
> Enter&Plug Sistemas
> Divisão: Desenvolvimento / Banco de dados
> Franca - SP
>
> ----- Original Message -----
> From: "Pha-Lista" <lista em pha.com.br>
> To: <lista em firebase.com.br>
> Sent: Tuesday, June 21, 2005 3:03 PM
> Subject: [firebase-br] Dica para fechar a Transacao de Leitura do DBExpress
>
>
> >
> > Internamente o DBExpress abre uma transacao para leitura se nao hourve
> > nenhuma iniciada explicitamente, esta transacao fica em aberto (pelo meno
> > no driver do Delphi 6), se estiver tendo problemas com perfomance por
> > causa desta transacao tente utilizar o exemplo abaixo para fechar a
> > conexao e com isso a transacao, quando for necessario o proprio DBExpress
> > abrira novamente a conexao.
> >
> > Cuidado com a propriedade PacketRecords > 0, pois o ClientDataSet nao
> > fechara o SQLDataSet ate que todos os registros tenham sido carregados
> > imposibilitando o fechamento da transação, se for necessario crie um
> > metodo dos ClientDataSets
> >
> > serem carregado em segundo plano ao poucos para isso voce podera utilizar
> > um Action, um Timer ou usar o evneto OnIdle do TApplication.
> >
> >
> > procedure TForm1.SQLConnection1AfterConnect(Sender: TObject);
> > begin
> > IniciadaEm := Now; // Variavel definida no Form ou Data Modulo da Conexao
> > Timer1.Interval := 5000; // checa a cada 5 segundos
> > Timer1.Enabled := True;
> > end;
> >
> > procedure TForm1.SQLConnection1AfterDisconnect(Sender: TObject);
> > begin
> > IniciadaEm := 0;
> > Timer1.Enabled := False;
> > end;
> >
> > procedure TForm1.Timer1Timer(Sender: TObject);
> > var
> > I: Integer;
> > begin
> > // Verifica se a conexao pode ser fechada
> > if (IniciadaEm <> 0) and
> > // Configurei para tem tentar fechar depois de 30 minutos
> > (DateUtils.MinutesBetween(Now, IniciadaEm) > 30) and
> > (SQLConnection1.Connected) and
> > (SQLConnection1.ConnectionState = csStateOpen) and
> > (not SQLConnection1.InTransaction) then begin
> >
> > // Verifica se nao ha nenhum SQLDataSet aberto
> > for I := 0 to SQLConnection1.DataSetCount - 1 do
> > if (SQLConnection1.DataSets[I].State <> dsInActive) then Exit;
> >
> > SQLConnection1.Close;
> > end;
> > end;
> >
> >
> > Existem outra formas mais eficientes, mais os componentes ou o driver
> > precisariam ser alterados.
> >
> > Para quem utiliza o DBExpress e o Midas, existe um site muito interessante
> > www.distribucon.com
> >
> > Pode ser que no Delphi 2005, isso ja esteja corrigido.
> >
> > PHA
> > Nova Odessa / SP - Brazil
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> > Para editar sua configuração na lista, use o endereço
> > http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> >
> > --
> > No virus found in this incoming message.
> > Checked by AVG Anti-Virus.
> > Version: 7.0.323 / Virus Database: 267.7.9/23 - Release Date: 20/06/2005
> >
> >
>
>
>
>
>
> _______________________________________________________
> Yahoo! Acesso Grátis - Internet rápida e grátis.
> Instale o discador agora! http://br.acesso.yahoo.com/
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista