[firebase-br] Transaction Read only para relatórios.

Carlos H. Cantu listas em warmboot.com.br
Ter Jan 19 08:05:52 -03 2016


Na verdade, no Firebird, não há diferença de velocidade entre
transações ReadOnly e ReadWrite. O "trabalho" que o servidor terá para
manter as visões consistentes dos dados será o mesmo.

A única vantagem de se usar transações ReadOnly é se o isolamento
delas for ReadCommited, pois são inicializadas já pré-commitadas,
portanto, não bloqueiam a coleta de lixo, mesmo que fiquem abertas por
horas. Recomendo usar RC+RO em todos os selects onde não seja
necessário manter uma visão constante das informações.

Obviamente, pode-se usar transações ReadOnly (com qualquer
isolamento), para garantir que não será feita nenhuma alteração nos
dados, mas em termos de velocidade, não fará diferença.

Falando especificamente de relatórios, usar uma transação RC+RO pode
não ser interessante, visto que não haverá consistência na visão dos
dados, o que pode invalidar o resultado final do relatório.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

WROV> Si una transacción solamente va a realizar un SELECT (o varios SELECT)
WROV> entonces es preferible y recomendable que su acceso sea READ ONLY, porque
WROV> las transacciones READ ONLY son más rápidas que las transacciones READ
WROV> WRITE, sobre todo en las situaciones donde pueden ocurrir conflictos porque
WROV> muchos usuarios están usando la misma fila de la misma tabla.

WROV> Sin embargo, si la aplicación es mono-usuario o si nadie estará realizando
WROV> un UPDATE o un DELETE a una fila que está en el conjunto resultado de un
WROV> SELECT, casi no hay diferencia de velocidad porque las computadoras
WROV> modernas son muy rápidas y usar READ ONLY o usar READ WRITE es cuestión de
WROV> gustos.

WROV> De todas maneras, lo lógico, lo recomendable, es siempre usar READ ONLY en
WROV> las transacciones que solamente harán SELECTs. Por algo existen las
WROV> transacciones con acceso READ ONLY, por algo se las inventó.

WROV> Saludos.

WROV> Walter.




WROV> 2016-01-11 7:47 GMT-04:00 Joel <big.rid.listas em gmail.com>:

>> No slide 69, do link
>> http://pt.slideshare.net/ibsurgeon/3-how-transactionswork , encontrei a
>> frase:
>>
>> "Use read commited Read Only transactions for SELECTs"
>>
>>
>> Neste outro link, http://www.devrace.com/en/fibplus/articles/479.php
>> encontrei a frase:
>>
>> "Read only transactions are probably better because the server does not
>> need to save  all the changes in a database for finding conflicts with
>> other transactions."
>>
>>
>> No livro "Dominando Firebird - Uma Referência Para Desenvolvedores de
>> Banco de Dados", da Helen Borrie, encontrei, na página 485 "Modo de
>> Acesso" encontrei a dica:
>> "Um dos benefícios de uma transação READ ONLY é sua habilidade de
>> permitir a seleção de dados para a interface de usuário sem amarrar
>> recursos em excesso no servidor. Assegure-se de que suas transações
>> apenas de leitura estejam configuradas com o nível de isolamento READ
>> COMMITED para garantir que a coleta de lixo no servidor possa prosseguir
>> por esta transação."
>>
>>
>> Até hoje, utilizei uma mesma transaction, read-write, para insert,
>> update, delete e select.
>> Vocês utilizam uma transaction exclusiva para relatórios ?
>>
>>
>> Parece óbvio, mas gostaria de entender melhor antes de alterar os meus
>> relatórios para read-only.
>> Quero avaliar se vale a pena criar uma transaction read-only para os
>> cursores que só fazem leitura.
>>
>> Att.





Mais detalhes sobre a lista de discussão lista