[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