Trabalhando com transações em IBX
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 ??? :?: :?: :?:
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
Curtidas 0
Respostas
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+
T+
GOSTEI 0
Sremulador
25/03/2004
Mas os dois dão no mesmo, ou tem alguma melhor do que a outra.
GOSTEI 0
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+
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_
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.
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
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
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_
25/03/2004
Nem eu entendi também... :?
GOSTEI 0
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+
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_
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.
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
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
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+
|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