Você está na página 1de 28

Disciplina de Banco de Dados II

Transaes
Prof. Sidney Viana Universidade Salvador UNIFACS 2012

Contedo

Definio de transao Propriedades das transaes


Transaes no SGBD Estados de uma transao Savepoint Exerccios

Atomicidade Consistncia Isolamento Durabilidade

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

begin work e commit work

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

E a integridade dos dados, como fica ?????

Para assegurar a integridade dos dados, as transaes devem cumprir as seguintes propriedades:

. Atomicidade . Consistncia . Isolamento . Durabilidade

propriedades das transaes

. Atomicidade

Todas as operaes da transao devem ser refletidas corretamente no banco de dados

Se uma operao falhar, as demais operaes no sero levadas em conta.

... Ou tudo ... Ou nada

. Atomicidade

Considerando o exemplo citado, a movimentao financeira deve ser atmica.

Se acontecer algum problema no meio do processamento, devem ser restaurado o estado original das contas bancrias. ... Ou tudo ... Ou nada

. Consistncia

A execuo de uma transao isolada preserva a consistncia do banco de dados


Ao final da execuo de uma transao isolada, o banco de dados dever manter a consistncia. - No exemplo citado, ambas as contas devem ter sido atualizadas com os valores corretos.
8

. Isolamento

Cada transao no toma conhecimento da existncia de outra.

Considerando duas transaes Ti e Tj; Ti tem a sensao de que Tj j terminou e viceversa.

. 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.

O que est feito, permanecer.

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.

O que est feito, permanecer.

12

O acesso ao BD obtido pelas seguintes operaes:

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

Seja a transao Ti que transfere 50 reais da conta A para a conta B:

Ti : read (A);
A:=A-50; write (A); read (B); B:=B+50; write (B);

unidade lgica de processamento

15

Transaes em um SGBD

Exemplo: BEGIN WORK instruo em SQL

volta ao estado inicial

instruo em SQL instruo em SQL ROLLBACK WORK

16

Transaes em um SGBD

Exemplo: BEGIN; INSERT INTO TESTE


VALUES (1); INSERT INTO TESTE VALUES (2); COMMIT;
17

Transaes em um SGBD

Exemplo: BEGIN; INSERT INTO TESTE


VALUES (1); INSERT INTO TESTE VALUES (2); ROLLBACK;
18

LOGs (Registro de Ocorrncias)

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.

[start_transaction, T]: Indica que a transao T comeou a ser executada.

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.

LOGs (Registro de Ocorrncias)

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

Estados de uma transao

quando uma transao no termina com sucesso :

deve ser abortada

transao abortada

atualizaes devem ser desfeitas

rollback

transao finalizada com sucesso

atualizaes so efetivadas (committed)

muda o estado do Banco de Dados


21

Estados de uma transao (cont.)


Ativa
Ou estado inicial, a transao permanece neste estado enquanto estiver executando.

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

Estados de uma transao


Em efetivao parcial
Em efetivao
Transcrito para meio no voltil

Ativa

Os estados servem para garantir: Atomicidade Durabilidade Consistncia

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:

SAVEPOINT nome-identificador; ROLLBACK TO SAVEPOINT nome-identificador;

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

Responda s seguintes perguntas:

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