32
© Marcelo Bezerra de Alcântara Banco de Dados II - Transação - 1 Disciplina Disciplina Banco de Dados II Banco de Dados II Gerenciamento de Gerenciamento de transações transações Msc, Marcelo Bezerra de Alcântara [email protected]

© Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

Embed Size (px)

Citation preview

Page 1: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

[email protected]

Page 2: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

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

Page 3: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 4: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 5: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 6: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 7: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 8: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 9: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 10: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 11: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 12: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 13: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 14: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 15: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 16: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 17: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 18: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 19: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 20: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 21: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 22: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 23: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 24: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 25: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 26: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 27: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 28: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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)

Page 29: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 30: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 31: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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

Page 32: © Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara

© 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