© marcelo bezerra de alcântarabanco de dados ii - transação - 1 disciplina banco de dados ii...
TRANSCRIPT
© 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
© 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