© Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II...

Preview:

Citation preview

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 1

Disciplina Disciplina Banco de Dados IIBanco de Dados II

Gerenciamento de Gerenciamento de transaçõestransações

Msc, Marcelo Bezerra de Alcântara

malcantara@fa7.edu.br

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 2

ObjetivosObjetivos

1. Compreender a necessidade do uso das transações;

2. Entender o que é transação;

3. Conhecer as características de uma transação.

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 3

BibliografiaBibliografia

1. ELMASRI, Ramez; NAVATHE, Shamkant B, Sistemas de banco de dados. 4. ed. Pearson Brasil, 2005.

1. Capítulo 19

2. KORTH, Henry F.; SILBERSCHATZ, Abraham Sistemas de banco de dados. 3. ed, São Paulo: Makron Books, 1999.

1. Capítulo 13

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 4

SumárioSumário

1. Relembrando Conceitos

2. Por que transação?

3. Definição de transação

4. Propriedades da transação

5. Estados da transação

6. Fechamento

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 5

Relembrando ConceitosRelembrando Conceitos

• Banco de Dados– Coleção de dados relacionados. Ex: Planilha,

Fichário, SGBD, etc.

• Sistema Gerenciador de Banco de Dados (SGBD)– Coleção dos programas que permitem os

usuários criar e manipular um banco de dados;

• Sistema de Banco do Dados– União do SGBD + Base de dados

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 6

Sistema de Banco de Dados

Relembrando ConceitosRelembrando Conceitos

Meta-dados Banco de dados

SGBD

Software de acesso ao

dados

Software de processament

o das consultas

Aplicativo

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 7

Relembrando ConceitosRelembrando Conceitos

• Características de SGBD

Natureza auto-descritiva(Meta-dados)

Abstração dos dados

Suporte a múltiplas visões

Compartilhamentodos

dados

Processamento de

TransaçõesMulti-usuário

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 8

SumárioSumário

1. Relembrando Conceitos

2. Por que transação?

3. Definição de transação

4. Propriedades da transação

5. Estados da transação

6. Fechamento

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 9

Por que existe a transação?Por que existe a transação?

write(B)

B = B - A

write(B)

B = B + 50

read(B)

write(A)

read(B)

write(A)

A = A+A*0.1

read(A)

A = A – 50

read(A)

P2P1

P1 interfere em P2

P2 interfere em P1

Problema da perda

da atualizaçã

o

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 10

Por que existe a transação?Por que existe a transação?

write(B)

B = B / A

read(B)

write(A)

A = A+A*0.1

read(A)

write(A)

A = A – 50

read(A)

P2P1

P1 falha Desfazer operações

P2 atualiza valor inválido

Problema da atualização temporária

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 11

Por que existe a transação?Por que existe a transação?

print(S)

S = S + B

read(B)

write(A)

A = A+A*0.1

read(A)

S = S + A

S = 0

read(A)

P2P1

P1 valor inconsistente

P2 atualiza valor de A

Problema da totalização dos valores

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 12

SumárioSumário

1. Relembrando Conceitos

2. Por que transação?

3. Definição de transação

4. Propriedades da transação

5. Estados da transação

6. Fechamento

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 13

TransaçãoTransação

• Unidade lógica de processamento em um SGBD• Composta de uma ou mais operações

– seus limites podem ser determinados em SQL

• De forma abstrata e simplificada, uma transação pode ser encarada como um conjunto de operações de leitura e escrita de dados

read(x)x = x – iread(y)y = y * xwrite(x)write(y)

Tx lê o dado X do BD e oarmazena na variável X

grava no dado Y do BD ovalor da variável Y

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 14

SumárioSumário

1. Relembrando Conceitos

2. Por que transação?

3. Definição de transação

4. Propriedades da transação

5. Estados da transação

6. Fechamento

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 15

Propriedades de uma TransaçãoPropriedades de uma Transação

• Requisitos que sempre devem ser atendidos por uma transação

• Chamadas de propriedades ACID– Atomicidade– Consistência– Isolamento– Durabilidade ou Persistência

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 16

AAtomicidadetomicidade

• Princípio do “Tudo ou Nada”– ou todas as operações da transação são

efetivadas com sucesso no BD ou nenhuma delas se efetiva

• preservar a integridade do BD

• Responsabilidade do subsistema de recuperação contra falhas (subsistema de recovery) do SGBD– desfazer as ações de transações parcialmente

executadas

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 17

AAtomicidadetomicidade

• Deve ser garantida, pois uma transação pode manter o BD em um estado inconsistente durante a sua execução

read(x)x.saldo = x.saldo – 100.00write(x)read(y)y.saldo = y.saldo + 100.00write(y)

Tx (transferência bancária)

. . .

200.00200

500.00100

saldonúmero

Contas

x

y falha!

execução

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 18

CConsistênciaonsistência

• Uma transação sempre conduz o BD de um estado consistente para outro estado também consistente

• Responsabilidade conjunta do– DBA

• definir todas as RIs para garantir estados e transições de estado válidos para os dados

– exemplos: salário > 0; salário novo > salário antigo

– subsistema de recovery• desfazer as ações da transação que violou a

integridade

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 19

IIsolamentosolamento

• No contexto de um conjunto de transações concorrentes, a execução de uma transação Tx deve funcionar como se Tx executasse de forma isolada– Tx não deve sofrer interferências de outras

transações executando concorrentemente

• Responsabilidade do subsistema de controle de concorrência (scheduler) do SGBD

• garantir escalonamentos sem interferências

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 20

IIsolamentosolamento

write(B)

B = B - A

read(B)

write(B)

B = B + 50

read(B)

write(A)

A = A+A*0.1

read(A)

write(A)

A = A – 50

read(A)

T2T1

write(B)

B = B - A

write(B)

B = B + 50

read(B)

write(A)

read(B)

write(A)

A = A+A*0.1

read(A)

A = A – 50

read(A)

T2T1

escalonamento válido escalonamento inválido

T1 interfere em T2

T2 interfere em T1

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 21

DDurabilidade ou Persistênciaurabilidade ou Persistência

• Deve-se garantir que as modificações realizadas por uma transação que concluiu com sucesso persistam no BD– nenhuma falha posterior ocorrida no BD deve

perder essas modificações

• Responsabilidade do subsistema de recovery– refazer transações que executaram com

sucesso em caso de falha no BD

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 22

SumárioSumário

1. Relembrando Conceitos

2. Definição de transação

3. Por que transação?

4. Propriedades da transação

5. Estados da transação

6. Fechamento

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 23

Estados de uma TransaçãoEstados de uma Transação

• Uma transação é sempre monitorada pelo SGBD quanto ao seu estado– que operações já fez? concluiu suas

operações? deve abortar?

• Estados de uma transação– Ativa, Em processo de efetivação, Efetivada,

Em processo de aborto, Concluída– Respeita um Grafo de Transição de Estados

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 24

Transição de Estados de uma TransaçãoTransição de Estados de uma Transação

Ativa

Em Processo de Efetivação

Efetivada

Em Processo de Aborto

Concluída

iniciartransação

finalizartransação

transação deveser desfeita

conclusãoda transaçãocom sucesso

encerramentocom sucesso

conclusãoda transaçãosem sucesso

reads e writes

encerramentosem sucesso

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 25

Ativa

Em Processo de Efetivação

Efetivada

Em Processo de Aborto

Concluída

iniciartransação

finalizartransação

transação deveser desfeita

conclusãoda transaçãocom sucesso

encerramentocom sucesso

conclusãoda transaçãosem sucesso

transação deveser desfeita• Estado inicial de toda

transação selecionada para execução• Enquanto ativa, uma transação executa uma ou mais operações read e write

reads e writes

Transição de Estados de uma TransaçãoTransição de Estados de uma Transação

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 26

encerramentosem sucessoAtiva

Em Processo de Efetivação

Efetivada

Em Processo de Aborto

Concluída

iniciartransação

finalizartransação

transação deveser desfeita

conclusãoda transaçãocom sucesso

encerramentocom sucesso

conclusãoda transaçãosem sucesso

reads e writes

• Entra nesse estado após executar sua última operação(solicitação de COMMIT) • Neste momento, o SGBD precisa garantir que as suas atualizações sejam efetivadas com sucesso (não sofra falhas)

– aplicação de técnicas de recovery

Transição de Estados de uma TransaçãoTransição de Estados de uma Transação

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 27

Ativa

Em Processo de Efetivação

Efetivada

Em Processo de Aborto

Concluída

iniciartransação

finalizartransação

transação deveser desfeita

conclusãoda transaçãocom sucesso

encerramentocom sucesso

conclusãoda transaçãosem sucesso

reads e writes

• Entra nesse estado após o SGBD confirmar que todas as modificações da transação estão garantidas no BD (COMMIT OK)

– exemplos: gravação em Log, descarga de todos os buffers

em disco

Transição de Estados de uma TransaçãoTransição de Estados de uma Transação

encerramentosem sucesso

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 28

Transição de Estados de uma TransaçãoTransição de Estados de uma Transação

Ativa

Em Processo de Efetivação

Efetivada

Em Processo de Aborto

Concluída

iniciartransação

finalizartransação

transação deveser desfeita

conclusãoda transaçãocom sucesso

encerramentocom sucesso

conclusãoda transaçãosem sucesso

reads e writes

encerramentosem sucesso

• Entra nesse estado se não puderprosseguir a sua execução• pode passar para esse estado enquanto ativa (I) ou em processo de efetivação (II)

– exemplo (I): violação de RI– exemplo (II): pane no S.O.

suas ações já realizadas devem ser desfeitas (ROLLBACK)

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 29

encerramentosem sucesso

Transição de Estados de uma TransaçãoTransição de Estados de uma Transação

Ativa

Em Processo de Efetivação

Efetivada

Em Processo de Aborto

Concluída

iniciartransação

finalizartransação

transação deveser desfeita

conclusãoda transaçãocom sucesso

encerramentocom sucesso

conclusãoda transaçãosem sucesso

reads e writes• Estado final de uma transação• Indica uma transação que deixa o sistema

– as informações da transação mantidas em catálogo podem ser excluídas

operações feitas, dados manipulados, buffers utilizados, ...

– se a transação não concluiu com sucesso, ela pode ser reiniciada automaticamente

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 30

SumárioSumário

1. Relembrando Conceitos

2. Definição de transação

3. Por que transação?

4. Propriedades da transação

5. Estados da transação

6. Fechamento

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 31

Gerência Básica de TransaçõesGerência Básica de Transações

T1 inicia

Ações da Aplicação ou Usuário Ações do SGBD

inicia ações paragarantir Atomicidade de T1T1 submete

operações DML executa operações DML,garantindo Isolamento de T1, e testa RIs imediatas, com possível rollback e msg erro, para garantir Consistência de T1

T1 termina

testa RIs postergadas, com possível rollback e msg erro, para garantir Consistência de T1

executa ações paragarantir Durabilidade de T1

confirma o término de T1

para a aplicação/usuário

© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 32

FechamentoFechamento1. Uso da transação

• Facilita o desenvolvimento de aplicações: Garante a consistência dos dados; Se responsabiliza pelo controle de concorrência;

2. Um SGBD tradicional deve suportar as propriedades ACID;

3. Uma transação possui vários estados:– Ativa, Em processo de efetivação, Efetivada, Em

processo de aborto, Concluída4. A operação COMMIT deve ser utilizada para

solicitar a efetivação da transação5. A operação ROLLBACK deve ser utilizada para

solicitar o aborto da transação

Recommended