[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