[firebase-br] Transacoes no DBExpress (Conclusao)

Pha-Lista lista em pha.com.br
Qua Maio 18 15:50:43 -03 2005


Analizando as transacoes com o GStart -h

Cheguei as seguintes conclusoes.

1) O DBExpress executa um Commit e nao o CommitRetainig isso pode ser verificado no TSQLMonitor (
isc_commit_transaction).

2) Mais se uma consulta e executada no banco e nao ha nenhum transacao iniciada e criada uma internamente e esta transacao de leitura fica em aberto (isc_commit_retaining) ate que o banco seja desconectado.

- Nao sei dizer se depois de algum tempo esta transacao e finalizada.

- Como esta transacao geralmente e apenas para leitura, nao sei o quanto ele afeta no desempenho do FB, para os Updates uma transacao e iniciada e finaliza com Commit ou RollBack, isso e feito automaticamente pelo metodos PSStartTransaction, PSEndTransaction e PSInTransaction do TSQLDataSet ou manualmente pelo desenvolvedor.

- Pode se evitar que a transacao de leitura fique aberta iniciando uma transacao para fazer as consultas e depois finalizando a com Commit, tem tambem a propriedade SQLDataSet1.TransactionLevel, que pode ser utilizada para indicar qual a transacao a ser utilizada, por padrao e 0 e a ultima transacao ativa e utilizada.

3) Com algumas mudancas nos componentes do DBExpress ele pode facilmente trabalhar como o IBX e o MDO com relacao as transacoes (quem sabe no futuro crio componentes descentes que trabalhem desta forma).

Os teste foram feitos:

Windows XP Professional SP 2 super atualizado

FB 1.5.2 SS com o CollatePT_BR instalado na mesma maquina 
Conexao=localhost:C:\Arquivos de programas\Firebird\examples\EMPLOYEE.FDB

Delphi 6 UP 2 RTL 3
Componetes: TSQLConnection, TSQLDataSet, TSQLMonitor, TClientDataSet e TDataSetProvider

LibraryName=dbexpint.dll
VendorLib=GDS32.DLL

PHA
Nova Odessa / SP - Brazil






Mais detalhes sobre a lista de discussão lista