[firebase-br] Entendendo melhor o Gstat

Carlos H. Cantu (TeamFB) listas em warmboot.com.br
Qua Nov 23 09:54:30 -03 2005


Aparentemente vc tem algum componente mantendo uma transação aberta a
partir da hora que vc inicia a aplicação.

[]s
Cantu (Membro do TeamFB - FireBase)
http://www.warmboot.com.br
FireBase - http://www.FireBase.com.br

JCO>  
JCO> Ola pessoal,

JCO> Gostaria que alguém pudesse me ajudar a entender melhor este comando do Firebird: GStat -h

JCO> Conforme os artigos do Carlos Cantu na revista DB FreeMagazine
JCO> edições 01 e 02 que podem ser baixados gratuitamente em
JCO> http://www.dbfreemagazine.com.br/, ele diz que:
JCO> "Se a diferença entre Oldest active e Next transaction for muito
JCO> grande, pode indicar que as transações estão ficando abertas por
JCO> muito tempo, o que sugere uma falha no controle transacional da
JCO> aplicação cliente que faz acesso ao BD."

1- C:\>>gstat -h 'meu banco de dados' (as 10:00hs com os aplicativos rodando)
JCO>         Oldest transaction      198
JCO>         Oldest active           199
JCO>         Oldest snapshot         199
JCO>         Next transaction        12256

2 - C:\>>gstat -h 'meu banco de dados' (as 10:30hs com os aplicativos rodando)
JCO>         Oldest transaction      198
JCO>         Oldest active           199
JCO>         Oldest snapshot         199
JCO>         Next transaction        13148

3 - C:\>>gstat -h 'meu banco de dados' (as 10:40hs com os aplicativos parados)
JCO>         Oldest transaction      198
JCO>         Oldest active           199
JCO>         Oldest snapshot         199
JCO>         Next transaction        13308

4 - C:\>>gstat -h 'meu banco de dados' (as 10:41hs com os aplicativos rodando novamente)
JCO>         Oldest transaction      13308
JCO>         Oldest active           13309
JCO>         Oldest snapshot         13309
JCO>         Next transaction        13330

JCO> O que estou percebendo é que o Oldest active e Next transaction
JCO> só é atualizado quando eu me desconecto completamente do banco e me conecto novamente.
JCO> Trabalho com o Delphi6 e MDO (Testei com os componentes da
JCO> palheta do Interbase e o resultado não muda)  
JCO> Todas as mudanças no banco de dados estou fazendo por SQL: 
JCO> Ex:
JCO>  SqlText := 'UPDATE CAD_LEITORA SET Config=IntToStr(Config_MCA)
JCO> WHERE ENDERECO= IntToStr(Endereco)';
JCO>       try
JCO>         DM.MDOQuery1.SQL.Clear;
JCO>         DM.MDOQuery1.SQL.Add(SqlText);
JCO>         DM.MDOQuery1.Close;
JCO>         DM.MDOTransaction.StartTransaction;
JCO>         DM.MDOQuery1.ExecSQL;
JCO>         DM.MDOTransaction.Commit;
JCO>       except
JCO>       begin
JCO>         DM.MDOTransaction.RollBack;
JCO>       end;
JCO>       end;
JCO>   
JCO>   DM.SQL_LEITORA.Active := False;
JCO>   DM.SQL_FindLeitora.Active := False;
JCO>   DM.SQL_LEITORA.Active := True;
JCO>   DM.SQL_FindLeitora.Active := True;


JCO> O que será que está errado?

JCO> []'s

JCO> José Carlos Oliveira





Mais detalhes sobre a lista de discussão lista