Top Banner
Transações e Concorrência Daniela Barreiro Claro MATA-60 UFBA
43

Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Aug 09, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Transações e Concorrência

Daniela Barreiro ClaroMATA-60

UFBA

Page 2: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

2

◻Transação: programa em execução que forma uma unidade lógica de processamento que consiste de uma ou mais operações.

⬜ Exemplo: uma transferência de dinheiro entre duas contas executa uma transação consistente em duas atualizações, uma para cada conta.

Conceito de Transação

Page 3: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ É fundamental que todas as ações da transação sejam executadas completamente

◻ Caso contrário, os efeitos parciais devem ser desfeitos

◻ Ou seja, ou a transação inteira é executada ou nenhuma parte dela é executada

Conceito de Transação

3

Page 4: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Para garantir a integridade dos dados, é necessário que o sistema de banco de dados mantenha as seguintes propriedades das transações:⬜ Atomicidade⬜ Consistência⬜ Isolamento⬜ Durabilidade

Propriedades ACID

4

Page 5: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Atomicidade: todas as operações da transação são persistidas no banco de dados, ou nenhuma delas

◻ Consistência: a execução de uma transação mantém a consistência do banco de dados após sua execução

Propriedades ACID

5

Page 6: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Isolamento: mesmo várias transações executando simultaneamente, o sistema garante que uma transação não interfere em outras. Cada transação é isolada.

◻ Durabilidade: depois que uma transação é completada com sucesso, as mudanças devem ser persistidas no banco de dados, não podendo ser desfeita

Propriedades ACID

6

Page 7: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Exemplo: transação bancária de 50 reais da conta A para a conta B, as operações seriam (Ti):

◻ read(A);◻ A = A - 50;◻ write(A);◻ read(B);◻ B = B + 50;◻ write(B);

Propriedades ACID

7

Page 8: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Exemplo: transação bancária de 50 reais da conta A para a conta B, as operações seriam (Ti):

◻ read(A);◻ A = A - 50;◻ write(A);◻ read(B);◻ B = B + 50;◻ write(B);

Propriedades ACID

8

Atomicidade

Suponha que antes de executar a transação Ti os valores

de A e B são R$ 100 e R$ 500, respectivamente. Durante

a execução de Ti acontece uma falha (energia, hardware

ou software) que impede Ti de completar com sucesso. A

falha acontece após a operação write(A), mas antes da

operação write(B). O que vai ocorrer?

- componente de gerenciamento de transação

Page 9: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Exemplo: transação bancária de 50 reais da conta A para a conta B, as operações seriam (Ti):

◻ read(A);◻ A = A - 50;◻ write(A);◻ read(B);◻ B = B + 50;◻ write(B);

Propriedades ACID

9

Consistência

O requisito de consistência é que a soma de A e B sejam

inalterados pela execução da transação. Qual o exemplo

que poderia causa inconsistência nos dados?

- programador de aplicação

- Restrições de integridade (SGBD)

Page 10: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Exemplo: transação bancária de 50 reais da conta A para a conta B, as operações seriam (Ti):

◻ read(A);◻ A = A - 50;◻ write(A);◻ read(B);◻ B = B + 50;◻ write(B);

Propriedades ACID

10

Isolamento

Considere que a transação Tj esteja efetuando um saque

de R$ 100 na conta A simultaneamente a transação Ti e

as contas não podem ficar com saldo negativo (Conta

Poupança). Caso Ti inicie antes de Tj e após read(A),

mas antes de write(A), a transação Tj seja completada

com sucesso, o que vai ocorrer?

- componente de controle de concorrência

Page 11: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Exemplo: transação bancária de 50 reais da conta A para a conta B, as operações seriam (Ti):

◻ read(A);◻ A = A - 50;◻ write(A);◻ read(B);◻ B = B + 50;◻ write(B);

Propriedades ACID

11

Durabilidade

O sistema deve garantir que os dados, mesmo após uma

falha, sejam persistidos no disco. No nosso exemplo, se o

usuário for notificado que a transação foi realizada com

sucesso, os dados devem ser armazenados no disco,

garantindo que em caso de falha no sistema

(principalmente por falta de energia) os dados não sejam

perdidos.

- componente de gerenciamento de recuperação

Page 12: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Estado da transação

12

Ativa

Parcialmente

confirmada

Falha Abortada

Confirmada

Enquanto estiver

executando

rollback

commit

Encerrada

Page 13: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Quando ocorre uma falha na transação, ela é considerada abortada

◻ Quando há mudanças causadas por uma transação abortada tiverem sido desfeitas, dizemos que a transação foi revertida

◻ Uma transação que completa sua execução com sucesso é considerada confirmadaTransação confirmada só é desfeita por uma outra transação de compensação.

Estado da transação

13

Page 14: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ É muito mais fácil executar transações serialmente, ou seja, uma de cada vez

◻ Vantagens da execução concorrente:⬜ Aumento do número de transações executadas⬜ Melhor uso dos recursos computacionais⬜ Tempo de espera reduzido

◻ É preciso garantir a execução simultânea correta

Execuções simultâneas

14

Page 15: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Representam a ordem cronológica em que as instruções são executadas

◻ Devem preservar a ordem em que as instruções aparecem em cada transação individual

◻ O schedule S de n transações T1, T2, ...Tn⬜ As operações em S devem ocorrer na mesma ordem

que em Ti

Planos de Execução (schedules)

15

Page 16: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Um plano S com n transações é serializável se ele for equivalente a um plano serial.

◻ Um plano não-serializável não se garante que o mesmo seja correto.

◻ Exemplo: Transferência bancária entre duas contas, conta A com R$ 1000,00 e conta B com R$ 2000,00.⬜ Transação 1: A transfere R$ 50,00 para B⬜ Transação 2: A transfere 10% do valor da conta para B

Planos de Execução

16

Page 17: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Planos seriais (sequenciais)

17

T1 T2

read(A)

A = A - 50

write(A)

read(B)

B = B + 50

write(B)

read(A)

temp = A * 0.1

A = A - temp

write(A)

read(B)

B = B + temp

write(B)

A = 1000

A = 1000 - 50

A = 950

B = 2000

B = 2000 + 50

B = 2050

A = 950

temp = 950 * 0.1

A = 950 - 95

A = 855

B = 2050

B = 2050 + 95

B = 2145

T3 T4

read(A)

A = A - 50

write(A)

read(B)

B = B + 50

write(B)

read(A)

temp = A * 0.1

A = A - temp

write(A)

read(B)

B = B + temp

write(B)

A = 900

A = 900 - 50

A = 850

B = 2100

B = 2100 + 50

B = 2150

A = 1000

temp = 1000 * 0.1

A = 1000 - 100

A = 900

B = 2000

B = 2000 + 100

B = 2100

A = 1000

B = 2000

Soma = 3000

A = 855

B = 2145

Soma = 3000

A = 850

B = 2150

Soma = 3000

Page 18: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Planos não seriais (intercalados)

T1 T2

read(A)

A = A - 50

write(A)

A = 950

temp = 950 * 0.1

A = 950 - 95

A = 855

read(B)

B = B + 50

write(B)

B = 2050

B = 2050 + 95

B = 2145

A = 1000

A = 1000 - 50

A = 950

read(A)

temp = A * 0.1

A = A - temp

write(A)

B = 2000

B = 2000 + 50

B = 2050

read(B)

B = B + temp

write(B)

T3 T4

read(A)

A = A - 50

A = 1000

temp = 1000 * 0.1

A = 1000 - 100

A = 900

B = 2000

write(A)

read(B)

B = B + 50

write(B)

B = 2050 + 100

B = 2150

A = 1000

A = 1000 - 50

read(A)

temp = A * 0.1

A = A - temp

write(A)

read(B)

A = 900

B = 2000

B = 2000 + 50

B = 2050

B = B + temp

write(B)

A = 1000

B = 2000

Soma = 3000

A = 855

B = 2145

Soma = 3000

A = 900

B = 2150

Soma = 3050

Page 19: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Serializável ou não?

T1 T2

read(A)

A = A - 50

write(A)

A = 950

temp = 950 * 0.1

A = 950 - 95

A = 855

read(B)

B = B + 50

write(B)

B = 2050

B = 2050 + 95

B = 2145

A = 1000

A = 1000 - 50

A = 950

read(A)

temp = A * 0.1

A = A - temp

write(A)

B = 2000

B = 2000 + 50

B = 2050

read(B)

B = B + temp

write(B)

T3 T4

read(A)

A = A - 50

A = 1000

temp = 1000 * 0.1

A = 1000 - 100

A = 900

B = 2000

write(A)

read(B)

B = B + 50

write(B)

B = 2050 + 100

B = 2150

A = 1000

A = 1000 - 50

read(A)

temp = A * 0.1

A = A - temp

write(A)

read(B)

A = 900

B = 2000

B = 2000 + 50

B = 2050

B = B + temp

write(B)

A = 1000

B = 2000

Soma = 3000

A = 855

B = 2145

Soma = 3000

A = 900

B = 2150

Soma = 3050

serializável não serializável

Page 20: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Como as transações são programas - é difícil determinar exatamente que operações são realizadas e como interagem

◻ Considera-se apenas duas operações:⬜ read e write

◻ Com isso, entre as duas operações em um item de dado Q, pode haver uma sequência qualquer de operações

Operações críticas

20

Page 21: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Serialização de conflito: quando duas instruções referem-se a diferentes itens de dados, podem ser invertidas

◻ Serialização de visão - três condições:⬜ Se ler o valor inicial do mesmo item de dado em um plano, deve ler em

outro⬜ Se ocorrer uma escrita no mesmo item de dado, os dois planos devem ler

o valor⬜ Se ocorrer uma escrita final no mesmo item de dado, os dois planos

devem escrever o valor

Opções de Serialização

21

Page 22: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Exemplos

22

T1 T2

read(A)

A = A - 50

write(A)

read(B)

B = B + 50

write(B)

read(A)

temp = A * 0.1

A = A - temp

write(A)

read(B)

B = B + temp

write(B)

T3 T4

read(A)

A = A - 50

write(A)

write(B)

temp = A * 0.1

A = A - temp

write(A)

write(B)

T5

read(B)

B = B + 50

write(B)

Page 23: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ O isolamento é fundamental para garantir a consistência do banco de dados, mas com várias execuções simultâneas essa propriedade pode não ser preservada

◻ Para garantir essa propriedade, o sistema precisa controlar as interações por técnicas de controle de concorrência

Controle de Concorrência

23

Page 24: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Motivação:⬜ Melhor throughput e utilização dos recursos⬜ Tempo de espera reduzido

Controle de Concorrência

24

Page 25: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ As técnicas para controle de concorrência servem para assegurar a serialização de planos de execução usando PROTOCOLOS (conjunto de regras):⬜ Protocolos baseado em bloqueio, timestamp, gráficos,

validação, etc

Controle de Concorrência

25

Page 26: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Impedir que múltiplas transações acessem os itens concorrentes (armazena uma variável à Ti)⬜ SE a transação precisar de um item bloqueado⬜ ENTÃO é forçada a esperar até que o item seja liberado

◻ Bloquear

⬜ lock_item(Q) ou lock(Q)

◻ Desbloquear

⬜ unlock_item(Q) ou unlock(Q)

Bloqueio binário

26

Page 27: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

T1: lock_item(A); T2: lock_item(A);read(A); read(A);A <- A - 50; unlock_item(A);

write(A); lock_item(B);unlock_item(A); read(B);lock_item(B); unlock_item(B);read(B); display(A+B);B <- B + 50;write(B);unlock_item(B);

Exemplo - Serial

27

Page 28: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Exemplo - Concorrente

28

T1 T2

lock_item(A)

read(A)

A <- A - 50

write(A)

unlock_item(A)

lock_item(A)

read(A)

unlock_item(A)

lock(B)

read(B)

unlock_item(B)

display(A+B)

gerenciador de controle de concorrência

grant(A,T1)

grant(A,T2)

grant(B,T2)

Page 29: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Continuação - Concorrente

29

T1 T2

lock_item(B)

read(B)

B <- B + 50

write(B)

unlock_item(B)

gerenciador de controle de concorrência

grant(B,T1)

Há algum problema? Sugestão sobre como

resolver?

Page 30: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Exemplo - Concorrente

30

T1 T2

lock_item(A)

read(A)

A <- A - 50

write(A)

unlock_item(A)

lock_item(A)

read(A)

unlock_item(A)

lock(B)

read(B)

unlock_item(B)

display(A+B)

gerenciador de controle de concorrência

grant(A,T1)

grant(A,T2)

grant(B,T2)

Page 31: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Exemplo - Concorrente

31

T1 T2

lock_item(B)

read(B)

B <- B + 50

write(B)

unlock_item(B)

gerenciador de controle de concorrência

grant(B,T1)

Causa impasse (deadlock)

Page 32: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Compartilhado (leitura)⬜ Pode apenas ler, mas não escrever⬜ lock-s(Q) ou read_lock(Q)

◻ Exclusivo (escrita)⬜ Pode ler e escrever⬜ lock-x(Q) ou write_lock(Q)

◻ Desbloquear⬜ unlock(Q)

Bloqueio compartilhado/exclusivo

32

Page 33: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

T1: lock-x(A); T2: lock-s(A);read(A); read(A);A <- A - 50; unlock(A);

write(A); lock-s(B);unlock(A); read(B);lock-x(B); unlock(B);read(B); display(A+B);B <- B + 50;write(B);unlock(B);

Exemplo - Serial

33

Page 34: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Bloqueios não garantem a serialização e nem a prevenção de deadlock

◻ Deve-se ter um protocolo adicional relacionado ao posicionamento das operações de bloqueio e desbloqueio

◻ O mais conhecido é o 2PC –Two Phase Commit

Bloqueios

34

Page 35: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Um protocolo que assegura a seriação e consiste em duas fases:⬜ Fase de crescimento: uma transação pode obter bloqueios, mas não pode

liberar qualquer bloqueio

⬜ Fase de encolhimento: uma transação pode liberar bloqueios, mas não pode obter novos bloqueios

◻ Inicialmente, a transação está em fase de crescimento e pode obter qualquer bloqueio

◻ Quando a transação libera um bloqueio, ela entra em fase de encolhimento e não pode obter mais bloqueios

Bloqueio de duas fases

35

Page 36: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Exemplo - Duas fases

36

T1 T2

lock-s(A)

read(A)

lock-x(B)

unlock(A)

read(B)

B <- B + A

write(B)

unlock(B)

lock-s(B)

read(B)

lock-x(A)

unlock(B)

read(A)

A <- A + B

write(A)

unlock(A)

Page 37: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ 2 fases básico

◻ 2 fases conservador: requer que uma transação bloqueie todos os itens que ela acessa antes que a transação inicie

◻ 2 fases estrito: não libera nenhum de seus bloqueios exclusivos até terminar a execução da transação

◻ 2 fases rigoroso: não libera nenhum de seus bloqueios (exclusivo ou compartilhado) até terminar a execução da transação

◻ Até agora todos os protocolos causam deadlock, como resolver?

Bloqueio de duas fases

37

Page 38: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Timestamp⬜ Identificador único criado pelo SGBD⬜ Podem ser um contador ou data/hora

◻ Cada item de dados Q é associado 2 valores⬜ W-Timestamp(Q): maior timestamp que tenha executado um

write(Q) com sucesso - Transação mais nova⬜ R-Timestamp(Q): maior timestamp que tenha executado um

read(Q) - Transação mais nova.

Baseado em Timestamp

38Estes timestamps são executados sempre que um read(Q) ou write(Q) é executada.

Page 39: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Funcionamento

⬜ Ti emitiu um READ(Q)

■ Se TS(Ti) < W-Timestamp(Q) então

■ Ti precisa ler um valor de Q que já foi modificado por outro.

■ Alguma Tj + nova já teria escrito o valor no item Q antes que Ti tivesse a chance de ter lido Q.

■ Logo, READ(Q) é rejeitada e Ti é revertida

■ Se TS(Ti)>W-Timestamp(Q) então

■ READ(Q) é executada

■ R-timestamp(Q) é definido como TS(Ti)

Baseado em Timestamp

39

Page 40: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Funcionamento

⬜ Ti emitiu um WRITE(Q)

■ Se TS(Ti) < R-Timestamp(Q) então

■ Alguma Tj + nova já leu o valor do item Q antes que Ti tivesse a chance para escrever Q.

■ Logo, WRITE(Q) é rejeitada e Tié revertida

■ Se TS(Ti) < W-Timestamp(Q) então

■ WRITE(Q) é rejeitada e Ti é revertida

■ Alguma Tj + nova já escreveu o valor do item Q antes que Ti tivesse a chance para escrever Q

■ Caso contrário,

Baseado em Timestamp

40

Page 41: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

◻ Se Ti for revertida, o sistema atribui um novo timestamp e reinicia.

◻ Este protocolo garante serialização e deadlock-free⬜ Mas não garante a estagnação (starvation)

■ Uma sequência de transações curtas causa o reinício repetido da transação longa.

⬜ Pode-se evitar a estagnação garantindo que■ Não haja outra T mantendo um bloqueio sobre Q em um modo

que entra em conflito■ Não existe outra T que esteja esperando um bloqueio sobre Q

e que fez a solicitação de bloqueio antes de Ti

Baseado em Timestamp

41

Page 42: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Considere as duas transações a seguir:T1: read(A); T2: read(B);

read(B); read(A);if A = 0 then B <- B + 1; if B = 0 then A <- A + 1;write(B) write(A);

Considere que o requisito de consistência seja A = 0 v B = 0, sendo A = B = 0 os valores iniciais.a) Mostre que cada execução serial preserva a consistência.b) Mostre uma execução simultânea não passível de seriação.c) Existe uma execução simultânea passível de seriação?

Exercício

42

Page 43: Transações e Concorrência - Ufbaformas.ufba.br/dclaro/mata60/Aula 12 - Transacoes e Concorrencia.p… · consistência do banco de dados, mas com várias execuções simultâneas

Silberschatz, A.; Korth, H. F., Sudarshan, S. Sistema de Bancos de Dados. 5a. Edição, Editora Campus, 2006.

Elmasri, R.; Navathe, S. B. Sistemas de Banco de Dados, 6ed. Pearson Addison Wesley, 2011.

Referências

43