transações banco de dados ii aline s costa 1. transaÇÕes conjunto de operações que formam uma...

32
Transações Banco de Dados II Aline S Costa 1

Upload: gabriel-henrique-viveiros-sa

Post on 07-Apr-2016

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

Transações

Banco de Dados IIAline S Costa

1

Page 2: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

TRANSAÇÕES Conjunto de operações que formam

uma única unidade lógica de trabalho; Conjunto de instruções em uma

linguagem de manipulação de dados delimitada por declarações da forma begin transaction e end transaction;

Uma transação sempre é executada por completo.

2

Page 3: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

PROPRIEDADES (ACID) Atomicidade Consistência Isolamento Durabilidade

3

Page 4: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

Acesso aos dados Read(X) – operação que transfere o item

de dados X do banco de dados para um buffer local alocado à transação que executou a operação read

Write(X) - operação que transfere o item de dados X do buffer local da transação que executou a operação write de volta ao banco de dados.

4

Page 5: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

Acesso aos dados Em um sistema de banco de dados real,

a operação write não resulta necessariamente na atualização imediata dos dados no disco; a operação write pode ser armazenada temporariamente na memória e ser executada depois no disco. Por enquanto, vamos supor que write atualiza o banco de dados imediatamente.

5

Page 6: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

PROPRIEDADES (ACID) Exemplo (transferência entre

contas)

Ti : read (A);A := A - 50;write (A);read (B);B := B + 50;write (B);

6

Page 7: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

PROPRIEDADES - Consistência Se o banco de dados é consistente

antes de uma transação, permanecerá consistente depois da execução da transação.

Ex.: A soma de A com B deve permanecer inalterada após a execução da transação.

7

Page 8: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

PROPRIEDADES - Atomicidade Se a atomicidade for garantida,

todas as ações da transação serão refletidas no banco de dados ou nenhuma delas o será.

Se a transação não se completar, os valores antigos são restabelecidos para fazer com que pareça que ela nunca foi executada. 8

Page 9: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

PROPRIEDADES - Atomicidade Ex.: Supondo que os valores de A e B sejam

1.000 e 2.000, respectivamente, antes da Execução de Ti. Além disso, supondo que uma falha tenha ocorrido depois da execução da operação write (A), mas antes da operação write (B). Os valores de A e B são 950 e 2.000, estando portanto, inconsistentes.

O sistema deve garantir que a situação de consistência seja restabelecida.

9

Page 10: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

PROPRIEDADES - Durabilidade Garante que, uma vez completada

a transação com sucesso, todas as atualizações realizadas no banco de dados persistirão, até mesmo se houver uma falha de sistema após a transação se completar.

10

Page 11: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

PROPRIEDADES - Isolamento Quando diversas transações concorrentes

são executadas, suas operações podem ser intercaladas de modo inconveniente, resultando em um estado inconsistente.

A propriedade de isolamento garante que a execução simultânea de transações resulte em uma situação no sistema equivalente ao estado obtido caso as transações tivessem sido executadas uma de cada vez, em qualquer ordem.

11

Page 12: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

PROPRIEDADES - Isolamento Ex.: Durante a transação Ti, o banco de dados

fica temporariamente inconsistente - após write (A) e antes de write (B). Se uma segunda transação, em execução concorrente, ler A e B nesse ponto intermediário, observará um valor inconsistente. Se executar atualizações baseadas nesses valores, o banco de dados permanecerá inconsistente mesmo após a execução das transações.

12

Page 13: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

EXECUÇÕES CONCORRENTES Transações Sequenciais

Implementação mais simples Transações Concorrentes

Implementação complexa Assegurar a consistência exige trabalho O paralelismo entre CPU e I/O pode ser

explorado para executar diversas transações em paralelo - aumento do throughput do sistema

13

Page 14: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

EXECUÇÕES CONCORRENTES Transações Concorrentes (Cont.)

Mistura de transações em execução simultânea no sistema.

Sequencial - transação deve esperar até que uma transação longa se complete, gerando atrasos imprevisíveis em sua execução.

Concorrentes - compartilham os ciclos de CPU e os acessos a disco entre si, implicando em redução de atrasos imprevisíveis e do tempo médio de resposta.

14

Page 15: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

EXECUÇÕES CONCORRENTES Esquemas de Controle de

Concorrência Controla as interações entre as

transações concorrentes para impedi-las de destruir a sua consistência.

Escalas de Execução (schedules) Ordens de execução que podem

garantir a manutenção da consistência.

15

Page 16: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

EXECUÇÕES CONCORRENTES - Exemplo T1 (transfere R$ 50,00 da conta A para a conta

B)

T1 : read (A);A := A - 50;write (A);read (B);B := B + 50;write (B);

16

Page 17: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

EXECUÇÕES CONCORRENTES - Exemplo T2 (transfere 10% do saldo da conta A para a

conta B)

T2 : read (A);temp := A * 0,1;A := A - temp;write (A);read (B);B := B + temp;write (B);

17

Page 18: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

EXECUÇÕES CONCORRENTES - Exemplo

Sejam 1.000 e 2.000 os valores correntes de A e B, respectivamente

Escala 1 - uma escala (schedule) sequencial na qual T1 é sequido por T2

T1 T2

read (A)A := A - 50write (A)read (B)B := B + 50write (B)

read (A)temp := A * 0,1A := A - tempwrite (A)read (B)B := B + tempwrite (B) 18

Page 19: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

EXECUÇÕES CONCORRENTES - Exemplo

Escala 2 - uma escala de execução sequencial na qual T2 é sequido por T1

Em ambos os casos - preservação da soma A + BT1 T2

read (A)temp := A * 0,1A := A - tempwrite (A)read (B)B := B + tempwrite (B)

read (A)A := A - 50write (A)read (B)B := B + 50write (B) 19

Page 20: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

EXECUÇÕES CONCORRENTES - Exemplo Escala 3 - uma escala de execução

concorrente equivalente à Escala 1 Preservação da soma A + B

T1 T2

read (A)A := A - 50write (A)

read (A)temp := A * 0,1A := A - tempwrite (A)

read (B)B := B + 50write (B)

read (B)B := B + tempwrite (B) 20

Page 21: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

EXECUÇÕES CONCORRENTES - Exemplo Escala 4 - uma escala de execução

concorrente Estado inconsistenteT1 T2

read (A)A := A - 50

read (A)temp := A * 0,1A := A - tempwrite (A)read (B)

write (A)read (B)B := B + 50write (B)

B := B + tempwrite (B) 21

Page 22: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

EXECUÇÕES CONCORRENTES Conclusões

Se o controle da execução concorrente é deixado completamente sob a responsabilidade do sistema operacional, muitas escalas de execução possíveis, inclusive aquelas que deixam o BD em um estado inconsistente como a descrita anteriormente, são factíveis.

É tarefa do banco de dados garantir que qualquer escala executada deixe o BD em estado consistente.

22

Page 23: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

EXECUÇÕES CONCORRENTES Conclusões (Cont.)

O componente do banco de dados que executa esta tarefa é chamado de componente de controle de concorrência.

Deve-se garantir que qualquer escala sob execução concorrente tenha o mesmo efeito de outra que tivesse sido executada sem qualquer concorrência. Isto é, uma escala de execução deve, de alguma forma, ser equivalente a uma escala sequencial.

23

Page 24: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

SERIALIZAÇÃO Equivalência de uma escala a uma escala

serial As únicas operações significativas de uma

transação, do ponto de vista da escala de execução, são suas instruções de leitura (read) e escrita (write).T1 T2

read (A)write (A)

read (A)write (A)

read (B)write (B)

read (B)write (B) 24

Page 25: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

SERIALIZAÇÃO Quais escalas de execução podem

garantir a consistência e quais não irão fazê-lo?

T1 T2

read (A)write (A)

read (A)write (A)

read (B)write (B)

read (B)write (B) 25

Page 26: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

RECUPERAÇÃO Se uma transação Ti falhar, por

qualquer razão, precisamos desfazer seus efeitos para garantir a propriedade de atomicidade da transação.

Em um sistema que permite a execução concorrente, também é necessário assegurar que qualquer transação Tj que seja dependente de Ti também seja abortada. 26

Page 27: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

ESCALAS DE EXECUÇÃO RECUPERÁVEIS Na situação abaixo é impossível se

recuperar corretamente da falha T8: T8 T9

read(A)write(A)

read(A)read(B)

Supondo que T9 foi efetivada (não falhou). Se T8 falhar depois de write(A) terá que ser abortada e assim T9 também, só que T9 não falhou e será completada...isso não deveria acontecer. É uma escala não recuperável. 27

Page 28: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

ESCALAS DE EXECUÇÃO RECUPERÁVEIS Na situação abaixo é impossível se

recuperar corretamente da falha T8 T8 T9

read(A)write(A)

read(A)read(B)

A maioria dos sistemas de banco de dados exige que todas as escalas sejam recuperáveis.

28

Page 29: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

ESCALAS DE EXECUÇÃO RECUPERÁVEIS

Uma escala recuperável é aquela na qual, para cada par de transações Ti e Tj, tal que Tj leia itens previamente escritos por Ti, a efetivação de Ti apareça antes da efetivação de Tj.

29

Page 30: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

ESCALAS SEM CASCATA A transação T10 escreve um valor para

A que é lido pela transação T11. A transação T11 escreve um valor para A que é lido pela transação T12.

Se T10 falhar, T10 deverá ser desfeita. Como T11 é dependente de T10, T11 deverá ser desfeita. Como T12 é dependente de T11, T12 deverá ser desfeita. Esse fenômeno é chamado de retorno em cascata (cascading rollback)

30

Page 31: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

ESCALAS SEM CASCATA

O retorno em cascata é indesejável. É conveniente restringir as escalas àquelas nas quais os retornos em cascata não possam acontecer.

T10 T11 T12

read(A)read(A)write(A) read(A)

read(A)write(A)

read(A)

31

Page 32: Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções

ESCALAS SEM CASCATA

Escala sem cascata: Se Tj lê um item de dados

previamente escrito por Ti, a operação de efetivação de Ti deve aparecer antes da leitura de Tj.

32