85
ACH2025 Laboratório de Bases de Dados Laboratório de Bases de Dados Aula 16 Transações SISTEMAS DE INFORMAÇÃO Professora: Fátima L. S. Nunes

ACH2025-Aula16-Transações [Modo de Compatibilidade]

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ACH2025-Aula16-Transações [Modo de Compatibilidade]

ACH2025Laboratório de Bases de DadosLaboratório de Bases de Dados

Aula 16

Transações

SISTEMAS DE

INFORMAÇÃO

Professora:

�Fátima L. S. Nunes

Page 2: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Conceitos� Transação: unidade de execução do programa que

acessa/atualiza vários itens de dados.

– Em geral, iniciada por um programa do usuário, escrita em linguagem de alto nível.linguagem de alto nível.

– Delimitada pelas instruções: begin transaction eend transaction

– Para garantir integridade dos dados, SGBD deve manter as propriedades ACID: Atomicidade, Consistência, Isolamento e Durabilidade.

SISTEMAS DE

INFORMAÇÃO

e Durabilidade.

2

Page 3: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Conceitos� Propriedades ACID:

– Atomicidade : todas as operações executadas ou nenhuma delas.

– Consistência : execução de transação isolada (sem outra transação simultânea) deve manter consistência dos dados.

– Isolamento : uma transação não “percebe” outra transação – para uma determinada transação, ou transação terminou antes dela ou começou depois.

– Durabilidade : após uma transação completada, mudanças

SISTEMAS DE

INFORMAÇÃO

– Durabilidade : após uma transação completada, mudanças persistem no BD, mesmo se houver falhas no sistema.

3

Page 4: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Conceitos� Propriedades ACID:

– Exemplo: transações acessando dados com as operações:

read (x): transfere dado do BD para o bufferread (x): transfere dado do BD para o buffer

write (x): transfere dado do buffer para o BD

– Exemplo clássico de transferência de dinheiro entre 2 contas bancárias:

read(A);

A := A – 50;

write (A)

SISTEMAS DE

INFORMAÇÃO4

write (A)

read (B);

B := B + 50;

write (B);

Page 5: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Conceitos� Propriedades ACID:

– Exemplo clássico de transferência de dinheiro entre 2 contas bancárias:

read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

Consistência?

SISTEMAS DE

INFORMAÇÃO5

write (B);

Page 6: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Conceitos� Propriedades ACID:

– Exemplo clássico de transferência de dinheiro entre 2 contas bancárias:

read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

Consistência:

-soma de A e B permanecem inalteradas no final

-garantir a consistência de uma transação individual é dever do programador da aplicação

SISTEMAS DE

INFORMAÇÃO6

write (B);

Page 7: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Conceitos� Propriedades ACID:

– Exemplo clássico de transferência de dinheiro entre 2 contas bancárias:

read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

Atomicidade?

SISTEMAS DE

INFORMAÇÃO7

write (B);

Page 8: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Conceitos� Propriedades ACID:

– Exemplo clássico de transferência de dinheiro entre 2 contas bancárias:

Atomicidade:read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

Atomicidade:

-ou faz todas as operações ou desfaz tudo se houver falha no SGBD

- tarefa do SGBD (componente de gerenciamento de transação)

SISTEMAS DE

INFORMAÇÃO8

write (B);

Page 9: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Conceitos� Propriedades ACID:

– Exemplo clássico de transferência de dinheiro entre 2 contas bancárias:

read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

Durabilidade?

SISTEMAS DE

INFORMAÇÃO9

write (B);

Page 10: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Conceitos� Propriedades ACID:

– Exemplo clássico de transferência de dinheiro entre 2 contas bancárias:

Durabilidade:read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

Durabilidade:

-quando a transação terminar, os valores da nova conta persistirão no BD, mesmo se houver falha do sistema

- tarefa do SGBD (componente de gerenciamento de recuperação)

SISTEMAS DE

INFORMAÇÃO10

write (B);recuperação)

Page 11: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Conceitos� Propriedades ACID:

– Exemplo clássico de transferência de dinheiro entre 2 contas bancárias:

read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

Isolamento?

SISTEMAS DE

INFORMAÇÃO11

write (B);

Page 12: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Conceitos� Propriedades ACID:

– Exemplo clássico de transferência de dinheiro entre 2 contas bancárias:

Isolamento:read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

Isolamento:

-se houver outra transação sendo executada ao mesmo tempo, esta não influenciará na transação atual

- tarefa do SGBD (componente de controle de concorrência)

SISTEMAS DE

INFORMAÇÃO12

write (B);

Page 13: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Estados de transação

� Se SGBD não apresentar falhas: transação completada com sucesso � transação confirmada (commited ).

� Em caso de falhas: transação abortada� transação revertida (rolled back ).

� Após confirmada, transação somente poderá ser revertida se houve uma transação de compensação � responsabilidade do usuário.

SISTEMAS DE

INFORMAÇÃO13

Page 14: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Estados de transação� Estados possíveis de uma transação:

– ativa: enquanto está executando;

– parcialmente confirmada: após execução instrução final;– parcialmente confirmada: após execução instrução final;

– falha: quando descobre-se que execução normal não pode prosseguir;

– abortada: depois que transação foi revertida e o BD foi restaurado ao estado anterior ao início da transação;

– confirmada: após término bem sucedido.

SISTEMAS DE

INFORMAÇÃO14

Page 15: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Estados de transação� Diagrama de estados:

parcialmente confirmada

ativa

confirmada

abortadafalha

confirmada

SISTEMAS DE

INFORMAÇÃO15

Page 16: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Estados de transação� SGBD pode:

– reiniciar a transação: somente se tiver sido abortada como resultado de algum erro de hw ou sw que não foi criado por meio da lógica interna da transação. meio da lógica interna da transação.

• transação reiniciada é considerada nova transação.

– matar a transação: devido a algum erro lógico interno que só pode ser corrigido com reescrita do programa de aplicação.

• exemplos de motivos: entrada defeituosa de dados, dados não

SISTEMAS DE

INFORMAÇÃO

• exemplos de motivos: entrada defeituosa de dados, dados não encontrados no BD.

– maioria dos SGBDs não permite escritas externas observáveis em transações (impressões, caixa eletrônico)...

Por quê ???16

Page 17: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Estados de transação� SGBD pode:

– reiniciar a transação; somente se tiver sido abortada como resultado de algum erro de hw ou sw que não foi criado por meio da lógica interna da transação. meio da lógica interna da transação.

• transação reiniciada é considerada nova transação.

– matar a transação: devido a algum erro lógico interno que só pode ser corrigido com reescrita do programa de aplicação.

• exemplos de motivos: entrada defeituosa de dados, dados não

SISTEMAS DE

INFORMAÇÃO

• exemplos de motivos: entrada defeituosa de dados, dados não encontrados no BD.

– maioria dos SGBDs não permite escritas externas observáveis em transações (impressões, caixa eletrônico)...

Por quê ??? Garantia de atomicidade !!!17

Page 18: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Implementação de atomicidade e durabilidade� Responsabilidade: SGBD – componente de gerenciamento de

recuperação

� Como poderiam ser implementadas essas propriedades ???

SISTEMAS DE

INFORMAÇÃO18

Page 19: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Implementação de atomicidade e durabilidade� Responsabilidade: SGBD – componente de gerenciamento de

recuperação

� Esquema mais simples: cópia de sombra

antiga cópia antiga cópia

do BD nova cópia do

db-pointer db-pointer

SISTEMAS DE

INFORMAÇÃO19

antiga cópia do BD

do BD

(a ser excluída)

nova cópia do BD

Page 20: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Implementação de atomicidade e durabilidade� Esquema mais simples: cópia de sombra

– considera somente uma transação ativa ao mesmo tempo;

– considera BD como simplesmente um arquivo em disco;– considera BD como simplesmente um arquivo em disco;

– transação que quer atualizar BD cria cópia completa dele;

– todas atualizações feitas sobre a cópia;

– se transação abortada, a nova cópia é excluída;

– transação concluída:

• SO confirma se todas páginas da cópia foram gravadas em

SISTEMAS DE

INFORMAÇÃO

• SO confirma se todas páginas da cópia foram gravadas em disco;

• atualiza db-pointer para apontar para nova cópia;

• exclui cópia antiga.

20

Page 21: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Implementação de atomicidade e durabilidade� Esquema mais simples: cópia de sombra

– tratamento de falhas:

• falha de transação: exclui a nova cópia do BD

• falha do sistema: • falha do sistema:

– se db-pointer não foi atualizado no disco � quando sistema for reiniciado, lerá o db-pointer e verá conteúdo original do BD;

– se db-pointer foi atualizado � todas páginas foram gravadas no disco � quando sistema for reiniciado, lerá o db-pointer e verá conteúdo depois de todas atualizações

SISTEMAS DE

INFORMAÇÃO

db-pointer e verá conteúdo depois de todas atualizações serem realizadas pela transação.

• gravação do db-pointer tem que ser atômica: todos os seus bytes escritos no disco! Sistemas de discos garantem isso (atualizações atômicas de blocos ou setores).

21

Page 22: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Implementação de atomicidade e durabilidade� Esquema mais simples: cópia de sombra

– Desvantagens ???

SISTEMAS DE

INFORMAÇÃO22

Page 23: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Implementação de atomicidade e durabilidade� Esquema mais simples: cópia de sombra

– Desvantagens ???

• cópia inteira do BD;

• não permite transações simultâneas.

– Outros esquemas: mais para frente, em recuperação de falhas.

SISTEMAS DE

INFORMAÇÃO23

Page 24: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Executar transações serialmente é mais fácil, mas há motivos

para permitir concorrência. Quais ???

SISTEMAS DE

INFORMAÇÃO24

Page 25: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Executar transações serialmente é mais fácil, mas há motivos

para permitir concorrência. Quais ???

– Melhor throughput (número de transações executadas em determinada quantidade de tempo);determinada quantidade de tempo);

– Melhor utilização de recursos (processador, E/S);

– Tempo de espera reduzido (transações curtas e longas).

� Qual é o problema de execução simultânea de transações?

SISTEMAS DE

INFORMAÇÃO25

Page 26: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Executar transações serialmente é mais fácil, mas há motivos

para permitir concorrência. Quais ???

– Melhor throughput (número de transações executadas em determinada quantidade de tempo);determinada quantidade de tempo);

– Melhor utilização de recursos (processador, E/S);

– Tempo de espera reduzido (transações curtas e longas).

� Qual é o problema de execução simultânea de transações?

– Consistência!

SISTEMAS DE

INFORMAÇÃO26

Page 27: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Schedule???

SISTEMAS DE

INFORMAÇÃO27

Page 28: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Schedule: ordem cronológica de executar transações

T1: T2:

read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

read(A);

temp := A * 0,1;

A := A – temp;

write (A)

read (B);

SISTEMAS DE

INFORMAÇÃO28

write (B); B := B + temp;

write (B);

Como garantir consistência ao final da execução das duas transações?

Page 29: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Schedule: ordem cronológica de executar transações

T1: T2:

read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

read(A);

temp := A * 0,1;

A := A – temp;

write (A)

read (B);

SISTEMAS DE

INFORMAÇÃO29

write (B); B := B + temp;

write (B);

Como garantir consistência ao final da execução da duas transações?

Supondo saldo atual = 1000 e 2000 para A e B, respe ctivamente. Soma final deve ser = 3000.

Page 30: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Alternativa 1: uma transação após a outra

read(A);

A := A – 50;

T1: T2:

A := A – 50;

write (A)

read (B);

B := B + 50;

write (B);

read(A);

temp := A * 0,1;

SISTEMAS DE

INFORMAÇÃO30

A := A – temp;

write (A)

read (B);

B := B + temp;

write (B);

Page 31: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Alternativa 1: uma transação após a outra

read(A);

A := A – 50;

T1: T2:Valores iniciais:

A := A – 50;

write (A)

read (B);

B := B + 50;

write (B);

read(A);

temp := A * 0,1;

Valores iniciais:

A=1000

B=2000

Valores finais de A e B ?

SISTEMAS DE

INFORMAÇÃO31

A := A – temp;

write (A)

read (B);

B := B + temp;

write (B);

Page 32: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Alternativa 1: uma transação após a outra

read(A);

A := A – 50;

T1: T2:

Valores finais de A := A – 50;

write (A)

read (B);

B := B + 50;

write (B);

read(A);

temp := A * 0,1;

Valores finais de A e B ?

855 e 2145

SISTEMAS DE

INFORMAÇÃO32

A := A – temp;

write (A)

read (B);

B := B + temp;

write (B);

Page 33: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Alternativa 1: uma transação após a outra

T1:read(A);

temp := A * 0,1;

T2:

read(A);

temp := A * 0,1;

A := A – temp;

write (A)

read (B);

B := B + temp;

write (B);

SISTEMAS DE

INFORMAÇÃO33

read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

write (B);

Page 34: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Alternativa 1: uma transação após a outra

T1:read(A);

temp := A * 0,1;

T2:

read(A);

temp := A * 0,1;

A := A – temp;

write (A)

read (B);

B := B + temp;

write (B);

SISTEMAS DE

INFORMAÇÃO34

read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

write (B);

Valores finais de A e B ?

Page 35: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Alternativa 1: uma transação após a outra

T1:read(A);

temp := A * 0,1;

T2:

read(A);

temp := A * 0,1;

A := A – temp;

write (A)

read (B);

B := B + temp;

write (B);

Valores finais de

SISTEMAS DE

INFORMAÇÃO35

read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

write (B);

Valores finais de A e B ?

850 e 2150

Page 36: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Schedule:

– ordem cronológica (sequencial) de executar transações;

– precisa consistir todas as instruções da transação;– precisa consistir todas as instruções da transação;

– precisa preservar a ordem das instruções em cada transação;

– os schedules vistos são seriais;

– Quantos schedules seriais válidos existem para um conjunto de n transações ???

SISTEMAS DE

INFORMAÇÃO

de n transações ???

Page 37: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Schedule:

– ordem cronológica de executar transações;

– precisa consistir todas as instruções da transação;– precisa consistir todas as instruções da transação;

– precisa preservar a ordem das instruções em cada transação;

– os schedules vistos são seriais

– Quantos schedules seriais válidos existem para um conjunto de n transações ??? n!

SISTEMAS DE

INFORMAÇÃO

de n transações ??? n!

Page 38: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Schedule:

– ordem cronológica de executar transações;

– precisa consistir todas as instruções da transação;– precisa consistir todas as instruções da transação;

– precisa preservar a ordem das instruções em cada transação;

– os schedules vistos são seriais

– Quantos schedules seriais válidos existem para um conjunto de n transações ??? n!

SISTEMAS DE

INFORMAÇÃO

de n transações ??? n!

– Schedule serial executa transações simultaneamente?

Page 39: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Schedule:

– ordem cronológica de executar transações;

– precisa consistir todas as instruções da transação;– precisa consistir todas as instruções da transação;

– precisa preservar a ordem das instruções em cada transação;

– os schedules vistos são seriais

– Quantos schedules seriais válidos existem para um conjunto de n transações ??? n!

SISTEMAS DE

INFORMAÇÃO

de n transações ??? n!

– Schedule serial executa transações simultaneamente? NÃO!

Page 40: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Se SGBD executa transações simultaneamente:

– schedule não precisa ser serial;

– SO pode comutar entre transações: fatia de tempo para – SO pode comutar entre transações: fatia de tempo para cada uma delas.

– Vantagem?

SISTEMAS DE

INFORMAÇÃO

Page 41: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Se SGBD executa transações simultaneamente:

– schedule não precisa ser serial;

– SO pode comutar entre transações: fatia de tempo para – SO pode comutar entre transações: fatia de tempo para cada uma delas.

– Vantagem? Compartilhamento de recursos.

– Várias sequências de execução possíveis � intercalação de instruções:

• difícil prever quantas instruções de cada transação serão

SISTEMAS DE

INFORMAÇÃO

• difícil prever quantas instruções de cada transação serão executadas em sua fatia de tempo;

• quantos schedules são possíveis para n transações?

Page 42: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Se SGBD executa transações simultaneamente:

– schedule não precisa ser serial;

– SO pode comutar entre transações: fatia de tempo para – SO pode comutar entre transações: fatia de tempo para cada uma delas.

– Vantagem? Compartilhamento de recursos.

– Várias sequências de execução possíveis � intercalação de instruções:

• difícil prever quantas instruções de cada transação serão

SISTEMAS DE

INFORMAÇÃO

• difícil prever quantas instruções de cada transação serão executadas em sua fatia de tempo;

• quantos schedules são possíveis para n transações?

Muito maior que n!

Page 43: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Alternativa 2: intercalando instruções

T1: T2:read(A);

A := A – 50;

read (B);

read(A);

temp := A * 0,1;

A := A – temp;

write (A)

A := A – 50;

write (A)

SISTEMAS DE

INFORMAÇÃO

read (B);

B := B + 50;

write (B);read (B);

B := B + temp;

write (B);

Page 44: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Alternativa 2: intercalando instruções

T1: T2:read(A);

A := A – 50;

Início: A=1000, B=2000

read (B);

read(A);

temp := A * 0,1;

A := A – temp;

write (A)

A := A – 50;

write (A)Valores finais de A e B ?

SISTEMAS DE

INFORMAÇÃO

read (B);

B := B + 50;

write (B);read (B);

B := B + temp;

write (B);

Page 45: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Alternativa 2: intercalando instruções

T1: T2:read(A);

A := A – 50;

Início: A=1000, B=2000

Valores finais de A e B ?

read (B);

read(A);

temp := A * 0,1;

A := A – temp;

write (A)

A := A – 50;

write (A)855 e 2145

SISTEMAS DE

INFORMAÇÃO

read (B);

B := B + 50;

write (B);read (B);

B := B + temp;

write (B);

Page 46: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Todas as execuções concorrentes resultam em um estado

correto ?

SISTEMAS DE

INFORMAÇÃO

Page 47: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Todas as execuções concorrentes resultam em um estado

correto ?T1: T2:

read(A);

write (A);

read(A);

temp := A * 0,1;

A := A – temp;

write (A);

read(B);

read(A);

A := A – 50;

SISTEMAS DE

INFORMAÇÃO

write (A); read (B);

B := B + 50;

write (B);B := B + temp;

write (B);

Valores finais de A e B ?

Page 48: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Todas as execuções concorrentes resultam em um estado

correto ?T1: T2:

read(A);

write (A);

read(A);

temp := A * 0,1;

A := A – temp;

write (A);

read(B);

read(A);

A := A – 50;

SISTEMAS DE

INFORMAÇÃO

write (A); read (B);

B := B + 50;

write (B);B := B + temp;

write (B);

Valores finais de A e B ?

950 e 2100

Page 49: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Todas as execuções concorrentes resultam em um estado

correto ?T1: T2:

read(A);

Onde está o erro?

write (A);

read(A);

temp := A * 0,1;

A := A – temp;

write (A);

read(B);

read(A);

A := A – 50;

SISTEMAS DE

INFORMAÇÃO

write (A); read (B);

B := B + 50;

write (B);B := B + temp;

write (B);

Page 50: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Todas as execuções concorrentes resultam em um estado

correto ?T1: T2:

read(A);

Onde está o erro?

write (A);

read(A);

temp := A * 0,1;

A := A – temp;

write (A);

read(B);

read(A);

A := A – 50;

SISTEMAS DE

INFORMAÇÃO

write (A); read (B);

B := B + 50;

write (B);B := B + temp;

write (B);

Page 51: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas� Se o controle da execução ficar a cargo do SO, muitos

schedules errados serão possíveis.

� Por isso, é tarefa do SGBD garantir que qualquer scheduleexecutado deixe o BD em estado consistente.executado deixe o BD em estado consistente.

� o schedule precisa ser equivalente a um schedule serial.

� Responsável por isso: componente de controle de concorrência.

SISTEMAS DE

INFORMAÇÃO

– Então, a questão se resume a: obter um schedule equivalentea um schedule serial.

– Há estratégias para isso.

Page 52: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas - Seriação– Difícil saber quais são realmente as operações de uma

transação.

– Para efeitos de escalonamento, interessam somente as instruções: read (Q) e write (Q).instruções: read (Q) e write (Q).

– Seriação de conflito e Seriação de visão.

T1: T2:read(A);

write(A);

SISTEMAS DE

INFORMAÇÃO

read(A);

write(A);

read(B);

write(B);read(B);

write(B);

Page 53: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de conflito– Schedule S com duas instruções consecutivas Ii e Ij,

pertencentes às transações Ti e Tj , respectivamente.

– Se Ii e Ij se referem a diferentes itens de dados � podemos inverter instruções I e I consecutivas sem afetar resultados de inverter instruções Ii e Ij consecutivas sem afetar resultados de qualquer instrução do schedule.

– Se Ii e Ij se referem ao mesmo item dado � ordem das duas etapas pode importar.

SISTEMAS DE

INFORMAÇÃO

Page 54: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de conflito– 4 casos a considerar:

1. Ii = read(Q) e Ij = read(Q) � ordem não importa

2. Ii = read(Q) e Ij = write(Q) � ordem importa:

• Se Ii vem antes de Ij, Ti não lê o valor de Q escrito por Tj

• Se Ij vem antes de Ii, Ti lê o valor de Q escrito por Tj

3. Ii = write(Q) e Ij = read(Q) � ordem importa: pelos mesmos motivos

4. Ii = write(Q) e Ij = write(Q) � ordem não afeta Ti ou Tj , mas:

• valor obtido pela próxima instrução read(Q) do schedule S é afetado;

SISTEMAS DE

INFORMAÇÃO

afetado;

• se não houver outra instrução write (Q) após Ii e Ij em S, a ordem das instruções afeta diretamente o valor final de Q no estado do banco de dados que resulta do schedule S.

Page 55: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de conflito– Ii e Ij conflitam se houver pelo menos uma operação write

T1: T2:read(A);read(A);

write(A);

read(A);

write(A);

read(B);

write(B);read(B);

CONFLITAM

SISTEMAS DE

INFORMAÇÃO

read(B);

write(B);

1. Ii = read(Q) e Ij = read(Q) � ordem não importa2. Ii = read(Q) e Ij = write(Q) � ordem importa3. Ii = write(Q) e Ij = read(Q) � ordem importa4. Ii = write(Q) e Ij = write(Q) � ordem não afeta Ti

ou Tj , mas pode afetar próximas instruções

Page 56: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de conflito– Ii e Ij conflitam se houver pelo menos uma operação write

T1: T2:read(A);read(A);

write(A);

read(A);

write(A);

read(B);

write(B);read(B);

NÃO CONFLITAM

SISTEMAS DE

INFORMAÇÃO

read(B);

write(B);

1. Ii = read(Q) e Ij = read(Q) � ordem não importa2. Ii = read(Q) e Ij = write(Q) � ordem importa3. Ii = write(Q) e Ij = read(Q) � ordem importa4. Ii = write(Q) e Ij = write(Q) � ordem não afeta Ti

ou Tj , mas pode afetar próximas instruções

Page 57: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de conflito– Considerando Ii e Ij como instruções consecutivas de um

schedule S:

– Se Ii e Ij forem instruções de diferentes transações e não conflitarem:conflitarem:

� podemos inverter a ordem de Ii e Ij , gerando um um novo schedule S’ � schedules equivalentes.

SISTEMAS DE

INFORMAÇÃO

Page 58: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de conflito– Considerando Ii e Ij como instruções consecutivas de um

schedule S:

– Se Ii e Ij forem instruções de diferentes transações e não conflitarem, podemos inverter a ordem I e I , gerando um conflitarem, podemos inverter a ordem Ii e Ij , gerando um um novo schedule S’ � schedules equivalentes.

T1: T2:read(A);

write(A);

read(A);

T1: T2:read(A);

write(A);

read(A);

SISTEMAS DE

INFORMAÇÃO

read(A);

write(A);

read(B);

write(B);

read(B);

write(B);

read(A);

read(B);

read(B);

write(B);

write(B);

write(A);

Page 59: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de conflito– Considerando Ii e Ij como instruções consecutivas de um

schedule S:

– Se Ii e Ij forem instruções de diferentes transações e não conflitarem, podemos inverter a ordem I e I , gerando um conflitarem, podemos inverter a ordem Ii e Ij , gerando um um novo schedule S’ � schedules equivalentes.

T1: T2:read(A);

write(A);

read(B);

T1: T2:read(A);

write(A);

read(A);

SISTEMAS DE

INFORMAÇÃO

read(B);

write(B);

write(B);

read(A);

write(A);

read(A);

read(B);

read(B);

write(B);

write(B);

write(A);

Page 60: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de conflito– Considerando Ii e Ij como instruções consecutivas de um

schedule S:

– Se continuarmos a inverter as instruções não conflitantes, obtemos um schedule equivalente a um schedule serial. obtemos um schedule equivalente a um schedule serial.

T1: T2:read(A);

write(A);

read(B);

T1: T2:read(A);

write(A);

read(B);

SISTEMAS DE

INFORMAÇÃO

read(B);

write(B);

write(B);

read(A);

write(A);write(A);

read(B);

write(B);

write(B);

read(A);

Page 61: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de conflito– Considerando Ii e Ij como instruções consecutivas de um

schedule S:

– Se continuarmos a inverter as instruções não conflitantes, obtemos um schedule equivalente a um schedule serial. obtemos um schedule equivalente a um schedule serial.

T1: T2:read(A);

write(A);

read(B);

write(B);

T1: T2:read(A);

write(A);

read(B);

SISTEMAS DE

INFORMAÇÃO

write(B);

read(A);

write(A);

read(B);

write(B);write(A);

read(B);

write(B);

write(B);

read(A);

Page 62: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de conflito– Considerando Ii e Ij como instruções consecutivas de um

schedule S:

– Se um schedule S puder ser transformado em um scheduleS´ por uma série de trocas de instruções não conflitantes, S´ por uma série de trocas de instruções não conflitantes, dizemos que S e S’ são equivalentes em conflito .

– Um schedule é serial de conflito se for equivalente em conflito a um schedule serial.

SISTEMAS DE

INFORMAÇÃO

Page 63: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de visão– Menos rigorosa do que equivalência em conflito.

– Dois schedules S e S’ são equivalentes em visão se:

1. Para cada item de dados Q, se a transação T ler o valor de 1. Para cada item de dados Q, se a transação Ti ler o valor de Q no schedule S

� então a transação Ti em S’ também precisa ler o valor inicial de Q.

� Ou seja: schedule inicial e final têm que ter um read (Q) correspondente

SISTEMAS DE

INFORMAÇÃO

correspondente

Page 64: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de visão– Menos rigorosa do que equivalência em conflito.

– Dois schedules S e S’ são equivalentes em visão se:

2. Para cada item de dados Q, se a transação T executar 2. Para cada item de dados Q, se a transação Ti executar read(Q) no schedule S:

� se este valor foi produzido por uma operação write(Q) executada pela transação Tj

� então a operação read(Q) da transação Ti no schedule S’ também precisa ler o valor inicial de Q

SISTEMAS DE

INFORMAÇÃO

schedule S’ também precisa ler o valor inicial de Q que foi produzido pela mesma operação write (Q) da transação Tj .

Page 65: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de visão– Menos rigorosa do que equivalência em conflito.

– Dois schedules S e S’ são equivalentes em visão se:

3. Para cada item de dados Q:3. Para cada item de dados Q:

� a transação que realiza a operação write(Q) final no schedule S precisa realizar a operação write(Q) final no schedule S´.

SISTEMAS DE

INFORMAÇÃO

Page 66: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Execuções simultâneas – Seriação de visão– Um schedule S é serial de visão se for equivalente em visão a

um schedule serial.

– Exercício:

– Verificar nos schedules exemplificados anteriormente, quais são seriais em visão.

SISTEMAS DE

INFORMAÇÃO

Page 67: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Facilidade de recuperação– Se houver falhas da transação durante a execução simultânea,

é necessário desfazer o efeito dessa transação para garantir a atomicidade.

Quais schedules são aceitáveis para garantir recuperação de – Quais schedules são aceitáveis para garantir recuperação de falhas?

– schedules recuperáveis

– schedules não em cascata

SISTEMAS DE

INFORMAÇÃO

Page 68: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Facilidade de recuperação – Schedules recuperáveisT1 T2

read(A);

write(A);

read(A);

– Suponha que T2 seja confirmada imediatamente após execução de read(A) (antes de T1 ser confirmada).

– Se T1 falhar antes de ser confirmada � como T2 leu o valor de A escrito por T1, teria que abortar T2 para garantir atomicidade.

– Mas T2 já foi confirmada e não pode ser abortada � schedule não recuperável que não pode ser permitido.

read(B);

SISTEMAS DE

INFORMAÇÃO

recuperável que não pode ser permitido.

– Maioria dos SGBDs exige que todos schedulers sejam recuperáveis:

– schedule recuperável : aquele em que, para cada par de transações Tie Tj, tal que Tj leia um item de dados previamente escrito por Ti, a operação commit de Ti aparece antes da operação commit de Tj.

Page 69: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Facilidade de recuperação – Schedules não em cascata– Para que um BD se recupere corretamente de uma falha em uma transação

Ti , pode ser necessário reverter várias transações � isso acontece se as transações tiverem lido dados escritos por Ti .

T1 T2read(A);

T3read(A);

read(B);

write(A);

read(A);

write(A);

read(A);

SISTEMAS DE

INFORMAÇÃO

Suponha que neste ponto T1 falhe.

T1 precisa ser revertida. E também T2 e T3 � rollback em cascata

Page 70: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Facilidade de recuperação – Schedules não em cascata

– Rollback em cascata é indesejável. Por quê???

SISTEMAS DE

INFORMAÇÃO

Page 71: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Facilidade de recuperação – Schedules não em cascata

– Rollback em cascata é indesejável. Por quê??? Trabalho desperdiçado.

– Preferível restringir schedules àqueles em que os rollbacks em cascata não podem ocorrer � schedules não em cascata.cascata não podem ocorrer � schedules não em cascata.

– schedule não em cascata � aquele em que, para cada par de transações Ti e Tj, tal que Tj leia um item de dados previamente escrito por Ti, a operação de commit de Ti aparece antes da operação de read de Tj.

– schedule não em cascata também é recuperável.

SISTEMAS DE

INFORMAÇÃO

– schedule não em cascata também é recuperável.

Page 72: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Implementação de isolamento

– Diversos esquemas de controle de concorrência podem ser usados para garantir que somente schedules aceitáveis sejam gerados.

– Exemplo mais simples: transação adquire bloqueio do BD – Exemplo mais simples: transação adquire bloqueio do BD inteiro antes de iniciar e libera depois que for confirmada:

– somente uma transação executada por vez: somente schedules seriais são gerados;

– grau de concorrência baixo, apesar de garantir isolamento.

– Objetivos dos esquemas de controle de concorrência: oferecer

SISTEMAS DE

INFORMAÇÃO

– Objetivos dos esquemas de controle de concorrência: oferecer alto grau de concorrência enquanto garante que possam ser gerados schedules seriais de conflito, seriais de visão e não em cascata.

Page 73: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Verificando a seriação

– Esquemas de controle de concorrência geram schedules � esses devem ser passíveis de seriação. Como verificar?

– Construir o gráfico de precedência:

– par G=(V,E), onde V é um conjunto de vértices e E é um conjunto de arestas.

– vértices: todas as transações participantes do schedule

– arestas: arestas Ti � Tj para as quais uma das condições é verdadeira:

– Ti executa write(Q) antes que Tj execute read (Q);

– T executa read(Q) antes que T execute write(Q);

SISTEMAS DE

INFORMAÇÃO

– Ti executa read(Q) antes que Tj execute write(Q);

– Ti executa write(Q) antes que Tj execute write (Q).

– se uma aresta Ti � Tj existir no gráfico de precedência, em qualquer schedule serial S´ equivalente a S, Ti precisa aparecer antes de Tj

Page 74: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Verificando a seriação

read(A);

A := A – 50;

T1: T2:

Schedule Gráfico deprecedência

A := A – 50;

write (A)

read (B);

B := B + 50;

write (B);

read(A);

temp := A * 0,1;

T1 T2

SISTEMAS DE

INFORMAÇÃO

temp := A * 0,1;

A := A – temp;

write (A)

read (B);

B := B + temp;

write (B);

– arestas Ti � Tj :� Ti executa write(Q) antes que

Tj execute read (Q);� Ti executa read(Q) antes que Tj

execute write(Q);� Ti executa write(Q) antes que

Tj execute write (Q).

Page 75: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Verificando a seriação

T1:read(A);

temp := A * 0,1;

T2:

Schedule Gráfico deprecedência

read(A);

temp := A * 0,1;

A := A – temp;

write (A)

read (B);

B := B + temp;

write (B);

T2 T1

SISTEMAS DE

INFORMAÇÃO

read(A);

A := A – 50;

write (A)

read (B);

B := B + 50;

write (B);

– arestas Ti � Tj :� Ti executa write(Q) antes que

Tj execute read (Q);� Ti executa read(Q) antes que Tj

execute write(Q);� Ti executa write(Q) antes que

Tj execute write (Q).

Page 76: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Verificando a seriação

T1: T2:

Schedule Gráfico deprecedência

read(A);

A := A – 50;

T1 T2

write (A);

read(A);

temp := A * 0,1;

A := A – temp;

write (A);

read(B);

A := A – 50;

Se gráfico tiver um ciclo, o schedule

não é serial de conflito.

SISTEMAS DE

INFORMAÇÃO

write (A); read (B);

B := B + 50;

write (B);B := B + temp;

write (B);

não é serial de conflito.

– arestas Ti � Tj :� Ti executa write(Q) antes que

Tj execute read (Q);� Ti executa read(Q) antes que Tj

execute write(Q);� Ti executa write(Q) antes que

Tj execute write (Q).

Page 77: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Verificando a seriação

– Ordem de seriação:

– obtida pela classificação topológica do gráfico de precedência

– ordem linear consistente com a ordem parcial do gráfico de precedência

– em geral existem várias ordens de seriação possíveis.

T2 T3

T1

Gráfico de precedênciaPossíveis ordens

de seriação

T1

T2

T1

T3

SISTEMAS DE

INFORMAÇÃO

T4T3

T4

T2

T4

Page 78: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Verificando a seriação

– Para testar seriação de conflito:

– construir gráfico de precedência;

– executar algoritmos de detecção de ciclos (exemplo: busca em profundidade – complexidade n2, onde n é o número de em profundidade – complexidade n2, onde n é o número de vértices).

– Ainda não existe algoritmo eficiente para testar seriação de visão: verifica-se as condições suficientes citadas

SISTEMAS DE

INFORMAÇÃO

Page 79: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Bibliografia

�Silberschatz, A.; Korth, H.F.; Sudarshan, S. “Sistema de Banco de Dados”, 5a. edição, Makron Books, 2006 (capítulo 15)Books, 2006 (capítulo 15)

�Elmasri, R.; Navathe, S.B. Fundamentals of Database Systems, Benjamin Cummings, 3a edição, 2000 (capítulo 17).

�Date, C. J. Introdução a Sistemas de Banco de

SISTEMAS DE

INFORMAÇÃO

�Date, C. J. Introdução a Sistemas de Banco de Dados - Tradução da 7ª Edição, 2000 - Editora Campus (capítulo 14).

79

Page 80: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Exercícios1. Dado o schedule a seguir, verifique se ele é serial

de conflito por meio da troca de instruções para gerar schedule equivalente.gerar schedule equivalente.

Transação1 Transação2 Transação3read(X)write(X)

read(Y)read(Y)write(Y)

write(Z)read(X)read(Z)

SISTEMAS DE

INFORMAÇÃO80

write(X)read(Y)

write(Y)write (X)

read(X)write(X)

write(Z)write(Z)

Page 81: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Exercícios

2. Dado o schedule a seguir, prove, elaborando o gráfico de precedência, se ele é ou não serial de conflitoconflito Transação1 Transação2 Transação3 Transação4

read(X)write(X)

read(Y)read(Y)write(Y)

write(Z)read(X)

read(X)write(X)

SISTEMAS DE

INFORMAÇÃO81

write(X)read(Y)

write(Y)write(X)

read(X)write(X)

write(X)write(Z)

Page 82: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Exercícios3. Dado o schedule a seguir, verifique se ele é serial

de visão.Transação1 Transação2 Transação3read(X)read(X)write(X)

read(Y)read(Y)write(Y)

write(Z)read(X)read(Z)

write(X)read(Y)

write(Y)

SISTEMAS DE

INFORMAÇÃO82

write(Y)write (X)

read(X)write(X)

write(Z)write(Z)

Page 83: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Exercícios4. O que é um schedule recuperável? Dê um

exemplo?5.Dê um exemplo de schedule em cascata. Qual é o 5.Dê um exemplo de schedule em cascata. Qual é o

problema deste tipo de schedule?

SISTEMAS DE

INFORMAÇÃO83

Page 84: ACH2025-Aula16-Transações [Modo de Compatibilidade]

Exercícios

�Silberschatz, A.; Korth, H.F.; Sudarshan, S. “Sistema de Banco de Dados”, 5a. edição, Makron Books, 2006 (capítulo 15) – exercícios 1 a 13Books, 2006 (capítulo 15) – exercícios 1 a 13

�Elmasri, R.; Navathe, S.B. Fundamentals of Database Systems, Benjamin Cummings, 3a edição, 2000 (capítulo 17) – exercícios 1 a 11, 14 a 20, 22 a 24

SISTEMAS DE

INFORMAÇÃO

�Date, C. J. Introdução a Sistemas de Banco de Dados - Tradução da 7ª Edição, 2000 - Editora Campus (capítulo 14) – exercícios 1 e 2

84

Page 85: ACH2025-Aula16-Transações [Modo de Compatibilidade]

ACH2025Laboratório de Bases de DadosLaboratório de Bases de Dados

Aula 16

Transações

SISTEMAS DE

INFORMAÇÃO

Professora:

�Fátima L. S. Nunes