Slide 1 - Transação
Slide 1 - Transação
Slide 1 - Transação
Transação
Estados da Transação
Níveis de Isolamento
Transação
2
Tipos de Sistemas
Transação
3
Características
Disponibilidade
Tempo de Resposta
Monousuário x Multiusuário
Transação
4
Transação: Conceito
Transação
5
Execução Intercalada
tempo
Transação
6
Execução Intercalada
B
A
tempo
Transação
7
Execução Intercalada
B
A A
tempo
Transação
8
Execução Intercalada
B B
A A
tempo
Transação
9
Execução Intercalada
B B
A A
tempo
SBD multiusuário:
- recursos principais: dados armazenados no BD
Transação
10
Transação
Unidade de execução de um programa que
acessa ou altera o conteúdo do BD
Sequência de operações de escrita/leitura no BD
Características:
é delimitada por declarações da forma begin
transaction e end transaction
todas as operações de escrita/leitura entre essas
duas declarações são consideradas parte de uma
mesma transação
Transação
11
Transação
Características:
um programa de aplicação pode conter mais do que
uma transação, se as operações de escrita/ leitura são
limitadas por diferentes pares de declaração begin
transaction e end transaction
Observações:
Transação de leitura (read-only), as operações de BD de
um transação apenas recuperam os dados
As operações que não sejam leitura/escrita não
apresentam efeito para o BD. Exemplo: soma, subtração
Os dados do BD estão armazenados em memória
secundária
Transação
12
Operação de Leitura
Transação
13
Operação de Escrita
Representada por w(x) ou write_item(x)
Escreve o valor da variável de programa x no
item de dado x
Passos:
encontrar o endereço do bloco que contém x
copiar o bloco para o buffer da memória principal
(se necessário)
copiar o valor da variável x para o buffer
escrever o novo valor do item de dado x no disco
(atualização do BD)
imediata ou postergada
Transação
14
Duas transações simples
transação 1 transação 2
read_item(x) read_item(x)
x := x - n y := x + n
write_item(x) write_item(y)
read_item(y)
y := y + n
write_item(y)
Transação
15
Observações
Transações submetidas pelos usuários
podem executar concorrentemente
podem acessar e alterar os mesmos itens de
dados
Transação
16
Necessidade do Controle de
Concorrência
Transação
17
Problema da Atualização Perdida
transação 1 transação 2
read_item(x)
• T2 lê o valor de x
x := x - n
antes de T1
read_item(x) realizar sua
x := x + m atualização
write_item(x) • o valor atualizado
read_item(y) de x é perdido
write_item(x)
tempo
y := y + n
write_item(y)
Transação
18
Problema da Atualização Perdida
Ocorre quando duas transações que
acessam os mesmos dados do BD têm suas
operações intercaladas de modo a gerar um
valor incorreto de algum item de dado
Exemplo prático
dois programadores escrevem o mesmo
programa ao mesmo tempo
cada cópia é alterada independentemente
a cópia 1 substitui a versão original
a cópia 2 substitui a versão 1
cópia 1: alterações perdidas
Transação
19
Problema da Leitura Incorreta
transação 1 transação 2
read_item(x)
x := x - n valor de x:
dirty data
write_item(x)
read_item(x)
tempo
x := x + m
write_item(x)
read_item(y) ---- falha a transação
Transação
20
Problema da Leitura Incorreta
Ocorre quando uma transação primeiro
atualiza o valor de um item de dado do BD e
em seguida falha
Transação
21
Problema das Somas Incorretas
transação 1 transação 2
soma := 0
read_item(x)
soma := soma + x
read_item(y)
soma := soma + y
read_item(x)
x := x + n
write_item(x)
tempo
read_item(z)
soma := soma + z
Transação
22
Problema das Somas Incorretas
Transação
23
Problema da Leitura não Repetida
Transação
24
Problema da Leitura não Repetida
transação 1 transação 2
read_item(x)
x := x – n
read_item(x)
x := x + m
write_item(x)
read_item(x)
x := x – n
tempo
write_item(x)
Transação
25
Necessidade do Controle de
Restauração
O SGBD não deverá permitir que algumas das
operações de uma transação T sejam aplicadas ao
banco de dados enquanto as outras operações T não o
forem.
Falha de disco
Transação
26
Transição de Estados de uma Transação
reads e writes
Parcialmente
Efetivada Commit
Begin
End
Transaction
Ativa Transaction
Abort
Efetivada
Abort conclusão
da transação
com sucesso
Falha
conclusão
da transação Concluída
sem sucesso
Transação
27
Log do Sistema
1. [start_transaction, T]
2. [escrever_item, T, X, valor_antigo, novo_valor]
3. [ler_item, T, X]
4. [commit, T]
5. [abort, T]
Undo Redo
Atomicidade
Consistência
Isolamento
Durabilidade
Transação
29
Propriedades ACID
Atomicidade
uma transação é uma unidade atômica
todas as operações das transações são
finalizadas e refletidas no BD ou nenhuma delas é
finalizada e refletida
Consistência
transformações preservam a consistência do BD
a execução correta de uma transação leva o BD
de um estado consistente a outro estado
consistente
Transação
30
Consistência
Estado de um BD
coleção de todos os valores de itens de dados
armazenados no BD em um determinado
momento
Estado consistente de um BD
um estado consistente satisfaz às restrições
especificadas no esquema, assim como
quaisquer outras restrições que existam no BD
Manter a consistência dos Dados
tarefa do programador que escreve os módulos
do BD ou do módulo do SGBD que garante as
restrições de integridade impostas pelo sistema
Transação
31
Propriedades ACID
Isolamento
transações são isoladas umas das outras
cada transação assume que está sendo
executada sozinha no sistema, e o SGBD garante
que os resultados intermediários da transação
são escondidos de outras transações executando
concorrentemente
Durabilidade
os valores dos dados alterados durante a
execução de uma transação devem persistir após
a finalização desta
Transação
32
Propriedades ACID
protocolos de controle protocolos de
de concorrência recuperação de falhas
garantem a consistência
dos dados através de garantem a consistência
acessos concorrentes dos dados após falhas do
sistema
isolamento
atomicidade e
Transação durabilidade 33
Planos de Execução
Transação
34
Quais as operações estão em conflito?
T1 T2
read_item(x)
x := x - n
read_item(x)
x := x + n
write_item(x)
read_item(y)
write_item(x)
tempo
y := y + n
write_item(y)
Transação
35
Planos Seriais
T1 T2 T1 T2
read_item(x) read_item(x)
x := x - n x := x + m
write_item(x) write_item(x)
read_item(y) read_item(x)
y := y + n x := x - n
write_item(y) write_item(x)
read_item(x) read_item(y)
x := x + m y := y + n
tempo
write_item(x) write_item(y)
Transação
36
Plano Não-Serial e Conflito Serializável
T1 T2 T1 T2
read_item(x) read_item(x)
x := x - n x := x - n
read_item(x) write_item(x)
x := x + m read_item(x)
write_item(x) x := x + m
read_item(y) write_item(x)
write_item(x) read_item(y)
y := y + n y := y + n
tempo
write_item(y) write_item(y)
Atualização Perdida
Transação
37
Considerações
Um plano S é serial porque as operações de cada
transação são executadas consecutivamente, sem
intercalação das operações de outra transação.
Nível de Isolamento
0 Leitura Não Efetivada Read Uncommitted
1 Leitura Efetivada Read Committed
2 Leitura Repetitiva Repeatable Read
3 Serializável Serializable
Transação
39
Níveis de Isolamento (SQL-92)
Transação
40
Níveis de Isolamento (SQL-92)
Sintaxe SQL
A configuração do nível de isolamento pode
ocorrer para todas as transações do banco de
dados ou para alguma específica
SET TRANSACTION
ISOLATION LEVEL
[
READ UNCOMMITTED
READ COMMITTED *(Padrão)
REPEATABLE READ
SERIALIZABLE
]
Transação
41
Exercício
transação 1 transação 2
read_item(x) Existe
x := x - 50
problema?
read_item(x)
temp := x * 0,1
x := x - temp
write_item(x)
read_item(y)
write_item(x)
read_item(y)
y := y + 50
tempo
write_item(y)
y := y + temp
write_item(y)
Transação
42
Exercício
Correlacione os itens ( ) escrita de dados em
da coluna ao lado com posições incorretas do
os três tipos de falhas disco
a seguir: ( ) divisão por zero
( ) bugs no SGBD
1. falha de disco ( ) leitura de um dado
2. falha da transação inexistente
3. falha do sistema ( ) bugs no SO
( ) quebra física do disco
Transação
43
Leitura Recomendada
ELMASRI, R; NAVATHE, S. B. Sistemas de
Banco de Dados. 4ª ed. São Paulo: Pearson,
2005.
Capítulo 17: Introdução aos conceitos e à Teoria de
Processamento de Transações
Transação
44