Trabalhando com transações em IBX

Firebird

25/03/2004

Estava eu outro dia navegando de boeira nos tópicos do clube e me deparei com um tópico que abordava a utilização das transações para os componentes IBX a primeira o usuário dizia que utilizava um componente transação para todas as tabelas da aplicação
Em seguida vinha outro que dizia que utilizava um componente de transação para cada tabela, então fiquei na dúvida quais os pros e contras destes modelos ??? :?: :?: :?:


Sremulador

Sremulador

Curtidas 0

Respostas

Afarias

Afarias

25/03/2004

Tudo depende da aplicação e da preferência de cada um... o importante é q vc saiba trabalhar com as transações (digo: entenda como funcionam) para poder definir o q é melhor para o seu caso.


T+


GOSTEI 0
Sremulador

Sremulador

25/03/2004

Mas os dois dão no mesmo, ou tem alguma melhor do que a outra.


GOSTEI 0
Afarias

Afarias

25/03/2004

Como disse, não há melhor... tudo depende do caso...

Vc pode por exemplo manter 1 transação para cada ´cadastro´ pois isso deixaria as coisas mais organizadas e permitiria q os cadastros trabalhem mais independentes (otimizando as transações) -- em outro exemplo, no caso de entradas tipo mestre-detalhe vc sempre vai usar apenas 1 transação para todas as tabelas envolvidas, já q todas participam de um processo único.

Então a ´regra´ é:: Transações não são definidas por ´tabelas´ ou ´aplicação´ -- pelo próprio conceito, transações são definidas por ´PROCESSOS´!


T+


GOSTEI 0
Alex_

Alex_

25/03/2004

Bom aproveitando o gancho, e tentando acalmar a briga dos dois :D

Eu uso apenas 1 transação, mas por motivo de não querer que as tabelas se fechem (não sei por que ocorre isso no IBX) eu não uso o Commit ´seco´.

Eu uso sempre o CommitRetaing e o RollbackRetaing, para evitar que ocorra o fechamento dos dataset´s e ter que abrir tudo novamente manualmente.

A pergunta é: eu Só uso os Retaing nunca uso os Commit e Rollback ´secos´ que fecham os Dataset´s, isso pode dar algum problema para mim????

Grato,

Alex.


GOSTEI 0
Afarias

Afarias

25/03/2004

Bom aproveitando o gancho, e tentando acalmar a briga dos dois :D


Oxe!! Que briga?!


|Eu uso apenas 1 transação, mas por motivo de não querer que as
|tabelas se fechem (não sei por que ocorre isso no IBX) eu não uso o
|Commit ´seco´.

Por isso mesmo vc deveria usar mais q 1 transação -- usando 1 transação para tudo e sempre usando CommitRetaining só vai ´prejudicar´ seu banco


|A pergunta é: eu Só uso os Retaing nunca uso os Commit e
|Rollback ´secos´ que fecham os Dataset´s, isso pode dar algum
|problema para mim????

SIM

Procure sempre usar Commits sempre q possível (por exemplo, quando fechar um cadastro) -- se usar uma transação para cada cadastro vai facilitar bastante.


T+


GOSTEI 0
Sremulador

Sremulador

25/03/2004

Por isso mesmo vc deveria usar mais q 1 transação -- usando 1 transação para tudo e sempre usando CommitRetaining só vai ´prejudicar´ seu banco


Não entendi em que hora o meu banco de dados será prejudicado :?: :?: :?:


GOSTEI 0
Alex_

Alex_

25/03/2004

Nem eu entendi também... :?


GOSTEI 0
Afarias

Afarias

25/03/2004

hahahahahaha... Ok, falei o efeito mas esqueci dos argumentos!! :)

Bom, de forma rasteira:: quando vc não fecha as transações, não se desfaz das ´versões´ de dados -- isso com o tempo, tornará a aplicação mais lenta a cada dia -- nada q não possa se ´sanado´ com um sweep do banco.

Dêem uma olhada nestes artigos::

http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=108
http://www.firebase.com.br/cgi-bin/firebase.cgi/dica?ID=331
http://www.firebase.com.br/cgi-bin/firebase.cgi/dica?ID=37



T+


GOSTEI 0
Alex_

Alex_

25/03/2004

Saquei, mas e se eu der um Commit (sem o retaing) somente ao Encerrar a Aplicação e durante a aplicação usar o Retaing como já uso. Será que resolve, ou pelo menos minimiza o problema?

Ou teria que ser o Close de cada Form?

É que eu não gostaria de usar mais de uma transação se possível. Mas gostaria de evitar essa lentidão dita a pouco.

:arrow: Pela 428ª vez agradeço.

Alex.


GOSTEI 0
Sremulador

Sremulador

25/03/2004

E justamente o que eu não quero também fazer um monte de transação ainda mais que eu utilizo o datamodule.


GOSTEI 0
Afarias

Afarias

25/03/2004

|Saquei, mas e se eu der um Commit (sem o retaing) somente ao
|Encerrar a Aplicação e durante a aplicação usar o Retaing como já uso.
|Será que resolve, ou pelo menos minimiza o problema?

Não


|Ou teria que ser o Close de cada Form?

Preferencialmente


|É que eu não gostaria de usar mais de uma transação se possível. Mas
|gostaria de evitar essa lentidão dita a pouco.

Usar mais q 1 transação é em geral a melhor escolha


|E justamente o que eu não quero também fazer um monte de transação
|ainda mais que eu utilizo o datamodule.

Vc pode usar + q 1 data module se for o caso



T+


GOSTEI 0
POSTAR