[firebase-br] Por favor ajuda sobre conexão dinamica ao banco
a.lima.silva em terra.com.br
a.lima.silva em terra.com.br
Qua Out 5 08:20:56 -03 2016
Caros colegas de lista, solicito a ajuda dos companheiros na seguinte questão :
Ambiente : Firebird 2.5 Super Classic , Delphi XE DBExpress e 55 estações.
Recebi um sistema feito em Delphi 7 para migrar para Delphi XE, tive que modificar a estrutura de transações do DBX do D7
de:
var TD: TTransactionDesc;
...
TD.TransactionID := Random(999999999);TD.IsolationLevel := xilREADCOMMITTED;Banco.StartTransaction(TD);
para :
var
T : TDBXTransaction;
Conn : T SQLConnection
...
T := Conn.SqlConection.BeginTransaction(TDBXIsolations.ReadCommitted);
Conn.CommitFreeAndNil(TransSelect);
...
Neste sistema 90% do processamento é realizado por StoredProcedures atraves do objeto TSQLStoredProc
Estranhamente verifiquei travamentos nessas SP, mesmo no aplicativo estando sendo explicitamente iniciado e finalizado uma transação
Nostalgicamente lembrei que quando usava IBX como componente de acesso, fazia meu StartTransaction e Commit e não havia esse problema.
Para contornar essa situação, comecei a criar em RunTime as conexões a partir do TSQLConnection , iniciar , executar, finalizar a transação e destruir a conexão.
Realmente feito isso destravou e o monitor do IBExpert nem mesmo consegue registrar a existência dessas conexões adicionais.
Um DBA que conversei ( especialista em Oracle e aplicativos web mobile ) disse que no Oracle não se deve manter conexões aberta por muito tempo e essa é a maneira correta.
Um colega antigo que trabalha com Delphi disse que terei inúmeros problemas ao fazer as ações fora da conexão principal.
Nos exemplos que vejo na internet vejo as aplicações por um SQLConnection criam uma conexao e tudo trafega dentro do contexto dessa conexão ( o que era feito ).
Percebi em laboratório um aumento em muito grande da velocidade, parece que fazer por conexões separadas da principal "emula uma Thread" , mas ante a inexperiência se o caminho adotado vai me dar problemas sérios futuros, resolvi ler mais e perguntar aos especialistas do uso diário.
Obrigado.
Mais detalhes sobre a lista de discussão lista