[firebase-br] Transação com Select ?

Eduardo Jedliczka edujed em gmail.com
Sex Fev 15 14:09:54 -03 2008


Como o Cantu disse, (exceto inserts em external files e generators) tudo
acontece dentro de uma transação.

Diferentemente de outros bancos muito conhecidos no mercado, o FB EXIGE
transações abertas para se fazer selects (e por isto também requer
COMMIT ou ROLLBACK)

Sabendo disto, todos os componentes de acesso iniciam automaticamente
uma transação caso não exista nenhuma em aberto, mas a maioria não
encerra elas, a menos que se utilize um DATABASE DISCONNECT... fazendo
que suas transações fiquem abertas por horas e mais horas.

A lógica para este comportamento chega a ser ridiculamente simples....
Resumidamente e em linguagem não-técnica o FB trabalha com
identificadores de transação, onde registros não-commitados são visíveis
apenas à transação com o mesmo número identificador, e transações
comitadas só são visíveis às transações com indicadores iguais ou
superiores à esta (em resumo, só são visiveis à transações que foram
iniciadas após o commit ter ocorrido).

Assim, não precisa-se perder muito tempo para realizar um rollback, pois
é só marcar aquela transação toda como LIXO, sem precisar desfazer nada.

Por outro lado, quando se emite um relatório, mesmo que ele demore
vários dias para concluir, ele estará 100% íntegro sem ter sido afetado
pelas várias transações (de insert, delete e update) que aconteceram
depois do início do relatório.

esta forma de trabalhar, tendo várias versões dos mesmos dados e índices
se chama versionning....

Sucesso,
Eduardo Jedliczka

Em Sex, 2008-02-15 às 01:18 -0200, SOFTClass (Listas) escreveu:
> Olá Eduardo,
> 
> Aproveitando a deixa...é realmente necessário ter uma transação iniciada 
> para selects ? Para inserts,updates,deletes tenho certeza que sim, mas 
> com selects sempre tive dúvidas...
> 
> Obrigado
> 
> Dener
> 
> 
> Eduardo Jedliczka escreveu:
> > 
> > É melhor ter 300.000 transações por dia, nem que seja para dar simples
> > selects ou inserts de um único registro, do que ter 10 transações com
> > duração de 8 horas que inserem milhares ou milhões de registros... pois
> > lembre-se o servidor pode travar, ou a energia acabar (e o no-break
> > quando existe pode estar sem carga) e perder tudo feito naquelas
> > transações que estão em aberto (aquelas 8 horas de trabalho)!
> 
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista