[firebase-br] Muitas Transações abertas...

Eduardo Jedliczka edujed em gmail.com
Qua Jan 26 17:37:20 -03 2011


Pelo pouco que você comentou, não dá para dar uma resposta final, pois
a diferença entre transações que já tiveram 100% do lixo recolhido e a
última transação ativa (56.500)  seria normal para um banco de alta
concorrência.

Mas a diferença entre a Oldest ACTIVE e a next Transaction (é inferior
a 2300 transações - que é um pouco alto para apenas 46 terminais), já
que a sua média é de 10 mil transações dia. Como o número ainda é
baixo, pode ser algum problema transacional (excesso de
commitRetaining) mas pode ser algum processo muito, muito longo.

Porém eu estou percebendo uma falha na sua lógica:
ao usar um gfix -shut para derrubar todos os usuários, o banco não
estará "imediatamente" pronto para o gfix -sweep. o que pode causar
esta grande diferença nos nºs.

experimente fazer um teste. coloque no seu script um gstat -h >
algum_arquivo antes do script, e outro gstat -h > algum_outro_arquivo
depois do script.

verá que sim, foi realizada uma boa limpeza, mas ainda assim, os nºs
não estarão "exatamente" próximos.

Pelo tamanho do Page Buffers (2048 setados no banco) tenho a impressão
que estão usando o Classic Server. Se eu estiver certo, há uma técnica
(não documentada) para "forçar" um sweep completo no banco **** apenas
no CLASSIC ****.

Faça um select count(*) from TODAS_AS_TABELAS após ter feito o gfix
-online single e antes de fazer o gfix -sweep.

depois compare os resultados.

==========================
Eduardo Jedliczka
Apucarana - Pr
==========================




Em 26 de janeiro de 2011 15:36, Michael Esse <michaelesse em gmail.com> escreveu:
> Saudações
>
>   Tenho uma base Firebird 2.0, com 46 Usuários simultâneos utilizando 25
> Módulos Delphi/DBExpress. A Base tem em torno de 5 GB, crescendo 300 MB /
> mês.
>
>  Todos os dias à tarde, os usuários reclamam de uma grande degradação de
> performance, desconfio que a causa da perda de performance seja um número
> excessivamente grande de transações não commitadas no banco. Logo abaixo
> listo o resultado do GSTAT na base.
>
> Estou errado de achar que a diferença entre OIT, OAT e Next Transaction está
> excessivamente alta?
>
> Alguma sugestão de como melhorar essa situação?
>
> Desde já,
>  grato pela atenção e pela colaboração,
>       Michael.
>
>
>
> Às 6 da manhã foi rodado o seguinte script (.bat):
>
> ----------------------------------------------------------------------
> gfix -user SYSDBA -password masterkey BASE.fdb -shut full -force 15
>
> gfix -user SYSDBA -password masterkey BASE.fdb -Online single
>
> gfix -user SYSDBA -password masterkey -sweep BASE.fdb
>
> gfix -user SYSDBA -password masterkey BASE.fdb -shut full -force 1
>
> gfix -user SYSDBA -password masterkey BASE.fdb -Online normal
>
> ----------------------------------------------------------------------
>
>
> Às 13:38h, do mesmo dia, o gstat me dizia:
>
> ----------------------------------------------------------------------
> Database header page information:
>        Flags                   0
>        Checksum                12345
>        Generation              5867985
>        Page size               16384
>        ODS version             11.0
>        Oldest transaction     5808842
>        Oldest active             5865349
>        Oldest snapshot        5865287
>        Next transaction        5867618
>        Bumped transaction      1
>        Sequence number         0
>        Next attachment ID      0
>        Implementation ID       16
>        Shadow count            0
>        Page buffers            2048
>        Next header page        0
>        Database dialect        3
>        Creation date           Dec 3, 2010 20:28:09
>        Attributes              force write
>
>    Variable header data:
>        Sweep interval:         0
>        *END*
> ----------------------------------------------------------------------
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>




Mais detalhes sobre a lista de discussão lista