Professional Documents
Culture Documents
Transaes
Prof. Sidney Viana Universidade Salvador UNIFACS 2012
Contedo
Definio de Transao
Transao uma unidade lgica de processamento de banco de dados, que inclui uma ou mais operaes de acesso ao BD (SQL-LMD). O conceito chave : transao uma unidade lgica de trabalho, ou seja, uma seqncia atmica de aes no BD (leituras/gravaes). Em um SGBD, uma transao delimitada pelas sentenas:
A transao composta por todas as operaes que so especificadas dentro desta delimitao.
3
Definio de Transao
Exemplos:
transferncias de fundos entre duas contas bancrias, uma operao nica sob o ponto de vista do cliente (porm, envolve vrias operaes de BD) reserva de passagens areas
Para assegurar a integridade dos dados, as transaes devem cumprir as seguintes propriedades:
. Atomicidade
. Atomicidade
Se acontecer algum problema no meio do processamento, devem ser restaurado o estado original das contas bancrias. ... Ou tudo ... Ou nada
. Consistncia
. Isolamento
. Isolamento
Significa que cada transao, no importando quantas transaes estejam sendo executadas simultaneamente, deve ser independente de todas as outras transaes. Imagine que uma pessoa utilize o caixa eletrnico para realizar um saque. Ela no fica pendente de outra transao que est sendo feita sobre a mesma conta bancria em forma paralela .
10
. Durabilidade
Uma vez que a transao completou-se com sucesso, as mudanas feitas no banco de dados persistiram mesmo se houver falhas no sistema.
11
. Durabilidade
Uma vez que o dinheiro tenha sido transferido com sucesso entre as contas, ele deve permanecer transferido, mesmo que o servidor de SGBD pare por falta de energia eltrica por exemplo.
12
Read (X) : transfere o item de dados X do BD para o buffer alocado a transao que executou a operao. Write (X) : transfere o item de dado X do buffer local da transao que executou o write de volta ao BD.
RAM-buffer
BD
X
13
Write (X)
Em um Sistema de Banco de Dados real, a operao write (escrita) no resulta necessariamente na atualizao imediata dos dados no disco. A operao write pode atualizar os dados temporariamente na memria e ser executada depois no disco. Porm, para melhor entendimento do contedo, ser considerado neste contexto, que a operao write atualiza os dados no disco imediatamente.
14
Ti : read (A);
A:=A-50; write (A); read (B); B:=B+50; write (B);
15
Transaes em um SGBD
16
Transaes em um SGBD
Transaes em um SGBD
Para poder se recuperar de falhas que afetam as transaes, o sistema mantm um log para controlar todas as operaes da transao que afetem valores dos itens do banco de dados.
O log mantido em disco, e alm disso, periodicamente copiado para um meio externo (fita), a fim de ser protegido de falhas catastrficas. A cada ao executada, so gravadas no log os seguintes tipos de entradas (T faz referncia a um nico id de transao):
1.
2.
[escrever_item, T, X, valor_antigo, novo_valor]: Indica que a transao T mudou o valor do item X no BD do valor_antigo para novo_valor. [ler_item, T, X]: Indica que a transao leu o valor X do BD.
[commit, T]: Indica que a transao T foi completada com sucesso e afirma que sus efeitos podem ser efetivados (gravados permanentemente) no BD. [abort, T]: Indica que a transao T foi interrompida (abortada). 19
3.
4.
5.
Como o log contm registro de todas as operaes WRITE que altera o valor de algum item do BD, possvel desfazer (undo) o efeito dessas operaes WRITE de uma transao T, voltando o log e reajustando todos o itens alterados por uma operao WRITE de T para seus valores_antigos.
Refazer (redo) todas as operaes de uma transao tambm pode ser necessrio se todas as atualizaes estiverem registradas no log, mas pode ocorrer uma falha antes que se possa garantir que todos esses novos_valores foram gravados permanentemente no BD.
20
transao abortada
rollback
Em efetivao Aps a execuo da ltima declarao. parcial Aps a descoberta de que execuo normal j no pode se realizar.
Em falha
Abortada
Depois que a transao foi desfeita e o BD foi restabelecido ao estado anterior do incio da execuo da transao.
Aps a concluso com sucesso.
22
Em efetivao
Ativa
Em falha
Abortada
Desfazer todos os efeitos da transao - Erro interno
-Entrada de dados no adequada -Dados solicitados no encontrados
23
Savepoint
So utilizados para trabalhar com transaes aninhadas. Este comando marca um ponto at o qual desejase desfazer (rollback) as sentenas SQL-DML.
Sintaxe:
24
Savepoint
Exemplo: BEGIN; INSERT INTO table1 VALUES (1); SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (2); ROLLBACK TO SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (3); COMMIT;
25
26
Exerccios
Que tipo de comandos SQL precisa de um ponto de efetivao (commit)? Citar um exemplo prtico para cada uma das propriedades de uma transao. Uma vez que efetivada a transao, possvel executar o comando rollback e qual o efeito do mesmo? O processamento de mltiplas transaes pode gerar inconsistncia no BD?
27
Leitura Recomendada
1. ELMASRI, R., NAVATHE, S. Sistemas de Banco de Dados. Rio de Janeiro: LTC, 4 edio, 2005. Captulo 17
28