[firebase-br] Entendendo melhor o Gstat

José Carlos Oliveira jc_oliveira2001 em yahoo.com.br
Ter Nov 22 08:39:11 -03 2005


 
Ola pessoal,

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

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

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

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

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

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

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


O que será que está errado?

[]'s

José Carlos Oliveira
-------------- Próxima Parte ----------
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.13.4/176 - Release Date: 20/11/2005


Mais detalhes sobre a lista de discussão lista