terça-feira, 26 de abril de 2011

Controle de Transações

A noção de transação é introduzida para forçar o sistema a executar uma seqüência de ações elementares como se fosse uma unidade lógica, sem interferência externa.

Uma unidade lógica de trabalho deve mostrar quatro propriedades, designadas pelas iniciais ACID (atomicidade, consistência, isolamento e durabilidade), para que seja qualificada como uma transação.

Atomicidade
Uma transação deve ser uma unidade atômica de trabalho; ou todas as suas modificações de dados são executadas ou nenhuma delas é executada. O ponto essencial da transação é englobar vários passos em uma única operação de tudo ou nada.
Consistência
Quando concluída, uma transação deve deixar todos os dados em um estado consistente. Em um banco de dados relacional, todas as regras devem ser aplicadas às modificações da transação para manter toda a integridade dos dados. Todas as estruturas de dados internas, tais como índices em árvore B ou listas duplamente vinculadas, devem estar corretas ao término da transação.
Isolamento
Modificações feitas por transações simultâneas devem ser isoladas uma das outras. Uma transação ’A’ ou reconhece os dados no estado em que estavam antes de outra transação ‘B’ simultânea tê-los modificado ou reconhece os dados depois que a segunda transação tiver sido concluída, mas não reconhece um estado intermediário. Isso é chamado serializabilidade porque resulta na capacidade de recarregar os dados iniciais e reexecutar uma série de transações de modo que os dados obtidos estejam no mesmo estado em que estavam depois que as transações originais foram executadas.
Durabilidade
Depois que uma transação tiver sido concluída, seus efeitos ficam permanentemente no sistema. As modificações persistem até mesmo no caso de uma queda do sistema.

.

A transação envolve os comandos sql BEGIN, COMMIT e ROLLBACK

BEGIN
O comando BEGIN inicia um bloco de transação, ou seja, todos os comandos após o BEGIN são executados em uma única transação, até ser encontrado um COMMIT ou ROLLBACK explícito.

COMMIT
O comando COMMIT efetiva a transação corrente. Todas as modificações efetuadas pela transação se tornam visíveis para os outros.

ROLLBACK
O comando ROLLBACK desfaz a transação corrente, fazendo com que todas as modificações realizadas por esta transação sejam rejeitadas.



Boas práticas para o controle de transações

1. Mantenha a transação tão curta quanto possível.
Depois de saber quais são as modificações que precisam ser feitas, inicie uma transação, execute as instruções de modificação e, em seguida, confirme ou reverta imediatamente. Só abra a transação quando for necessário.
2. Não abra uma transação enquanto estiver navegando pelos dados, se possível.
As transações não devem ser iniciadas até que toda a análise preliminar de dados tenha terminado.
3. Não solicite entradas de usuários durante a transação.
Obtenha todas as entradas necessárias da parte dos usuários antes do início de uma transação. Sendo necessária uma entrada adicional de usuário durante uma transação, reverta a transação atual e reinicie a transação depois que a entrada do usuário for fornecida. Todos os recursos mantidos pela transação são retidos por um tempo ate que o usuario responda, criando potencial para causar problemas de bloqueio.
4. Acesse a menor quantidade de dados possível enquanto estiver em uma transação.
Isso reduz o número de linhas bloqueadas, reduzindo, portanto, a contenção entre transações.



Fontes
http://msdn.microsoft.com/pt-br/library/ms175127.aspx
http://www.devmedia.com.br/post-10089-Conceitos-Transacoes-e-Log-Transaction.html
http://www.slideshare.net/ViniciusPaluch/transacoes-em-banco-de-dados-pt1

Nenhum comentário:

Postar um comentário