transações banco de dados ii aline s costa 1. transaÇÕes conjunto de operações que formam uma...
TRANSCRIPT
Transações
Banco de Dados IIAline S Costa
1
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
PROPRIEDADES (ACID) Atomicidade Consistência Isolamento Durabilidade
3
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
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
PROPRIEDADES (ACID) Exemplo (transferência entre
contas)
Ti : read (A);A := A - 50;write (A);read (B);B := B + 50;write (B);
6
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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