A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Prof. Alessandro Gonçalves

Apresentações semelhantes


Apresentação em tema: "Prof. Alessandro Gonçalves"— Transcrição da apresentação:

1 Prof. Alessandro Gonçalves
UNDB BANCO DE DADOS II Prof. Alessandro Gonçalves 1 1 1 1 1 1

2 Sistema de recuperação
2 2 2 2 2 2

3 Sistema de Recuperação
Considerações Problemas podem ocorrer É preciso que o sistema recupere o estado do BD até a consistência anterior, através de um esquema de recuperação Garantir a alta disponibilidade 3 3 3 3 3 3

4 Sistema de Recuperação
Classificação das falhas Podem provocar perda de dados do sistema ou não. As últimas são mais simples de tratar. Serão consideradas: Falha de transação Falha do sistema Falha de disco 4 4 4 4 4 4

5 Sistema de Recuperação
Falha de transação Erro lógico – condições internas, entrada defeituosa (sintaxe), dados não encontrados, estouro de recursos (memória, disco...) Exemplos Erro do sistema – o banco de dados está em algum estado indesejável (deadlock, por exemplo), impedindo a execução da transação. Contudo, não pode ser reexecutada de forma automática. 5 5 5 5 5 5

6 Sistema de Recuperação
Falha do sistema Nesta falha, há um defeito de hardware ou software ou sistema oepracional. O armazenamento volátil é perdido mas o não volátil permanece (garantindo a Durabilidade) A suposição de que erros de software e hardware provocam a parada do sistema mas não corrompem o armazenamento não volátil é conhecido como: Suposição parar-falhar 6 6 6 6 6 6

7 Sistema de Recuperação
Falha de disco Um bloco de disco pode ser corrompido devido a falha na transferência ou falha na cabeça. Caso haja sincronismo com outros discos, o sistema não sentirá a falha (acesso RAID). Caso não, ainda assim backups poderão ser restaurados 7 7 7 7 7 7

8 Sistema de Recuperação
Como criar esquema de recuperação 1) Identificar os modos de falhas dos dispositivos de armazenamentos 2) Como essas falham afetam o conteúdo do BD ? 3) Algoritmo deve garantir a atomicidade e coerência 8 8 8 8 8 8

9 Sistema de Recuperação
Algoritmos de recuperação possuem duas partes: 1) Ações executadas durante o processamento normal para que haja informações suficientes para recuperação 2) Ações tomadas após a falha, para recuperar o banco de dados, garantindo atomicidade, durabilidade de consistência. 9 9 9 9 9 9

10 Sistema de Recuperação
Estruturas de armazenamento Armazenamento volátil – memórias (principal e cache). São rápidas mas não garantem perenidade Armazenamento não volátil – sobrevivem a falhas do sistema, como exemplos discos e fitas magnéticas. Mais lentos por conter elementos mecânicos. Armazenamento estável – nunca (?) se perde 10 10 10 10 10 10

11 Sistema de Recuperação
Armazenamento estável Palavra chave: replicação Uma forma muito difundida é o acesso RAID, com gravação simultânea em dois ou mais discos. O problema é que os discos RAID geralmente estão próximos. Em caso de inundação ou incêndio, há problemas de corrupção do espelhamento. É mais seguro uma replicação à distância. 11 11 11 11 11 11

12 RAID Uma equipe de pesquisadores da Universidade de Berkeley na Califórnia desenvolveu um estudo definindo o RAID e os seus níveis (inicialmente 5). O RAID surgiu como um método de substituir um único disco grande e muitíssimo caro na época por vários menores e com custo muito mais baixo. O principio básico envolvido nessa tecnologia é uma teoria muito simples: através da combinação de uma matriz formada por discos "pequenos", um administrador poderá gravar dados com redundância para prover tolerância à falhas em um sistema ou dividi-los para aumentar a performance. Existem basicamente dois tipos de RAID, baseado em hardware ou em software. Aqui descrevemos o RAID baseado em hardware que é o mais difundido e que não depende de nenhum sistema operacional para ter um desempenho satisfatório. 12 12 12 12 12 12

13 RAID RAID Nível 0 Esse nível também é conhecido como “Striping” ou “Fracionamento”. No RAID 0 os dados são divididos em pequenos segmentos e distribuídos entre os diversos discos disponíveis, o que proporciona alta performance na gravação e leitura de informações, porém não oferece redundância, ou seja, não é tolerante a falhas. O aumento da performance no RAID 0 é obtido porque se vários dados fossem gravados em um único disco esse processo aconteceria de forma “Seqüencial” já nesse nível os dados são distribuídos entre os discos ao mesmo tempo. O RAID 0 pode ser usado para estações de alta performance (CAD, tratamento de imagens e vídeos), porém não é indicado para sistemas de missão-crítica. 13 13 13 13 13 13

14 RAID RAID Nível 1 O nível 1 também é conhecido como "Mirror", “Duplexing” ou “Espelhamento”. No RAID 1 os dados são gravados em 2 ou mais discos ao mesmo tempo, oferecendo portanto redundância dos dados e fácil recuperação, com proteção contra falha em disco. Uma característica do RAID 1 é que a gravação de dados é mais lenta, pois é feita duas ou mais vezes. No entanto a leitura é mais rápida, pois o sistema pode acessar duas fontes para a busca das informações. O RAID 1 pode ser usado para Servidores pelas características de ter uma leitura muito rápida e tolerância à falhas. 14 14 14 14 14 14

15 RAID RAID Nível 0+1 O RAID 0+1 é uma combinação dos níveis 0 (striping) e 1 (mirroring). No RAID 0+1 os dados são divididos entre os discos e duplicados para os demais discos. Assim temos uma combinação da performance do RAID 0 com a tolerância à falhas do RAID 1. Para a implantação do RAID 0+1 são necessários no mínimo 4 discos o que torna o sistema um pouco caro. Ao contrario do que muitos pensam, o RAID 0+1 não é o mesmo do RAID 10. Quando um disco falha em RAID 0+1 o sistema se torna basicamente um RAID 0. O RAID 0+1 pode ser utilizado em estações que necessitam de alta performance com redundância como aplicações CAD e edição de vídeo e áudio. 15 15 15 15 15 15

16 RAID RAID Nível 2 O nível 2 também é conhecido como “Monitoring”.
O RAID 2 é direcionado para uso em discos que não possuem detecção de erro de fábrica, pois “adapta” o mecanismo de detecção de falhas em discos rígidos para funcionar em memória. O RAID 2 é muito pouco usado uma vez que todos discos modernos já possuem de fábrica a detecção de erro. 16 16 16 16 16 16

17 RAID RAID Nível 3 No RAID 3 os dados são divididos (em nível de bytes) entre os discos enquanto a paridade é gravada em um disco exclusivo. Como todos os bytes tem a sua paridade (acréscimo de 1 bit para identificação de erros) gravada em um disco separado é possível assegurar a integridade dos dados para recuperações necessárias. O RAID 3 também pode ser utilizado para Servidores e sistemas de missão-critica. A dificuldade é que tem que haver sincronização entre os discos e nem todos o fabricantes suportam esta função. 17 17 17 17 17 17

18 RAID RAID Nível 4 O RAID 4 é muito parecido com o nível 3.
A diferença é que além da divisão de dados (em blocos e não bytes) e gravação da paridade em um disco exclusivo esse nível permite que os dados sejam reconstruídos em tempo real utilizando a paridade calculada entre os discos. Além disso a paridade é atualizada a cada gravação, tornando-a muito lenta. O RAID 4 pode ser utilizado para sistemas que geram arquivos muito grandes como Edição de vídeo, porque a atualização da paridade a cada gravação proporciona maior confiabilidade no armazenamento. taxa de gravação lenta; em caso de falha do disco, a reconstrução é difícil tecnologia não mais usada por haver melhores para o mesmo fim. 18 18 18 18 18 18

19 RAID RAID Nível 5 É semelhante ao nível 4, exceto o fato de que a paridade não é gravada em um disco exclusivo para isso e sim distribuída por todos os discos da matriz. Isso faz com que a gravação de dados seja mais rápida, porque não existe um disco separado do sistema gerando um “Gargalo”, porém como a paridade tem que ser dividida entre os discos a performance é um pouco menor que no RAID 4. O RAID 5 é amplamente utilizado em Servidores de grandes corporações por oferecer uma performance e confiabilidade muito boa em aplicações não muito pesadas. E normalmente são utilizados 5 discos para aumento da performance. 19 19 19 19 19 19

20 RAID RAID Nível 6 O RAID 6 é basicamente um RAID 5 porém com dupla paridade, garantindo a consistência mesmo que dois discos falhem. O RAID 6 pode ser utilizado para sistemas de missão-critica onde a confiabilidade dos dados é essencial. Ex: Ao usar 8 HDs de 20 GB cada um, em RAID 6, teremos 120 GB de dados e 40 GB de paridade. Problemas: precisa de N+2 HDs para implementar por causa dos discos de paridade; escrita lenta; sistema complexo de controle dos HDs. 20 20 20 20 20 20

21 RAID RAID Nível 1+0 O RAID 10 precisa de no mínimo 4 discos rígidos para ser implantado. Os dois primeiros discos trabalham com striping enquanto os outros dois armazenam uma cópia exata dos dois primeiros, mantendo a tolerância à falhas. A diferença básica desse nível para o RAID 0+1 é que sob certas circunstancias o RAID 10 pode sustentar mais de uma falha simultânea e manter o sistema. O RAID 10 pode ser utilizado em servidores de banco de dados que necessitem de alta performance e alta tolerância a falhas como em Sistemas Integrados e Bancos. Figura a seguir 21 21 21 21 21 21

22 RAID RAID Nível 1+0 22 22 22 22 22 22

23 Sistema de Recuperação
Outras formas Backup em outro servidor a cada x minutos Backup diário em um storage Backup semanal em um storage Backup mensal em um storage Desvantagens a cópia dos dados está sempre defasada A restauração leva um tempo para ser feita 23 23 23 23 23 23

24 Sistema de Recuperação
Proteção contra falha durante a transferência de dados MEMÓRIA ARMAZENAMENTO Término bem sucedido – informação ok Falha parcial – ocorreu no meio da transferência e o bloco de destino possui informações incorretas Falha total – a falha ocorreu cedo, de tal forma que o bloco de destino está intacto 24 24 24 24 24 24

25 Sistema de Recuperação
Falha de transferência de dados Havendo falhas, o sistema deve invocar uma rotina de recuperação. Para cada bloco lógico, há dois blocos físicos de gravação, local ou remoto. A operação de saída é executada da seguinte forma: 1) Escreva a informação no primeiro bloco físico 2) Quando a escrita for concluída com sucesso, escreva no segundo bloco 3) A saída só é completada depois que a segunda escrita terminar com sucesso 25 25 25 25 25 25

26 Sistema de Recuperação
Falha de transferência de dados Quando cada bloco é gravado, um checksum é gravado junto. A recuperação checa os dois blocos. Se forem iguais e não houver erro detectável, está tudo ok e nada é feito. Se houver um erro, o bloco é substituído pelo conteúdo do outro bloco. Se diferirem em conteúdo, o bloco é substituído pelo conteúdo do outro bloco. Garante desta forma, ou tudo é feito ou nada. 26 26 26 26 26 26

27 Sistema de Recuperação
Falha de transferência de dados Para garantir performance, somente os dados que estão sendo gravados são checados com os blocos. Lembre-se que a leitura em disco é bem lenta e deve ser evitada sempre que possível. Por que não usar 3 ou mais blocos físicos para cada bloco lógico, para ganho de confiabilidade ? 27 27 27 27 27 27

28 Sistema de Recuperação
Acesso aos dados Os discos estão divididos em blocos de tamanho fixo. Assume-se que nenhum item de dados esteja em mais de um bloco. Os blocos estão divididos em 2: Blocos físicos – existem fisicamente no disco Blocos de buffer – temporariamente na memória principal, em uma área chamada buffer de disco Existem duas operações: Input (B) – transfere o bloco físico para a memória principal Output(B) – transfere o bloco de buffer B para o disco, substituindo o bloco físico 28 28 28 28 28 28

29 Sistema de Recuperação
Acesso aos dados Existem duas operações: Input (A) – transfere o bloco físico A para a memória principal Output(B) – transfere o bloco de buffer B para o disco, substituindo o bloco físico A A B B 29 29 29 29 29 29

30 Sistema de Recuperação
Acesso aos dados Ao criar uma transação Ti, uma área reservada de memória também é criada. Quando a transação é confirmada/abortada, esta área é removida. Todos os itens de dados utilizados pela transação Ti estão nesta área. A interação da transação com o sistema se dá por meio da transferência de dados desta área de trabalho para o buffer do sistema e vice-versa Ex: um item X na transação Ti seria indicado por Xi 30 30 30 30 30 30

31 Sistema de Recuperação
Acesso aos dados read(X) atribui o valor do item de dados X à variável local Xi: 1) Se o bloco Bx em que X reside não estiver na memória principal, emite input (Bx) 2) Atribui a Xi, o valor de X vindo do bloco de buffer write(X) atribui o valor da variável local Xi ao item de dados X no buffer: 2) Atribui o valor de Xi a X no buffer Bx 31 31 31 31 31 31

32 Explicação no próximo slide
Sistema de Recuperação Acesso aos dados Quando ocorre a gravação física no disco ? O que ocorre se Write(x) for executada (commit) mas Output(Bx) falhar ? Exemplo anexo Explicação no próximo slide Ao encontrar uma saída forçada Output(B) 32 32 32 32 32 32

33 Sistema de Recuperação
Acesso aos dados Nesta falha, um esquema de recuperação simples poderia ser: 1) Execute a Transação Ti novamente 2) Não execute a Transação Ti novamente A se tornará $900, ao invés de $950, gerando inconsistência A tem valor de $900 e B $2000, que é inconsistente Não funciona porque é impossível prever o que deve ser feito, caso haja falhas no meio do processo. Ideal: para garantir atomicidade, gravamos as alterações em outra área, sem modificar o próprio banco de dados 33 33 33 33 33 33

34 Sistema de Recuperação
Log Um 'log” é um registro de tudo o que acontece no banco de dados, antes da gravação física. Cada atualização no banco de dados gera um registro detalhado. Select gera log ? Estrutura: ID da transação ID do item de dados Valor antigo Valor novo Identificador exclusivo da transação que realizou “write” Identificador exclusivo do item de dados (local do disco do item de dados) Valor antes da escrita Valor depois da escrita 34 34 34 34 34 34

35 No exemplo de log (em anexo), como ficaria o registro de Log ?
Sistema de Recuperação Log Exemplos de Log No exemplo de log (em anexo), como ficaria o registro de Log ? ID da transação ID do item de dados Valor antigo Valor novo 10737 ou Ti Bj 100 200 10738 ou Ti Aj null 50 Um registro para cada update. É como se fossem 3 updates ! 35 35 35 35 35 35

36 Sistema de Recuperação
Log Operações especiais no log Os eventos significativos precisam ser registrados no log (início de transação, commit, abort). Exemplo de uma transação completa: <Ti start> - transação iniciada <Ti, Xj, V1, V2> - A transação Ti realizou uma escrita sobre Xj. Xj tinha valor V1 e agora tem valor V2 após a escrita. <Ti commit> OU <T1 abort> - transação confirmada ou cancelada 36 36 36 36 36 36

37 Sistema de Recuperação
Log Problemas Overhead (sobrecarga) de disco, gravando cada Log assim que criado (existem técnicas que minimizam isto). Tamanho excessivo do log (que pode ser resolvido com Checkpoints) 37 37 37 37 37 37

38 Sistema de Recuperação
Modificação de banco de dados adiada Considere que as transações são executadas serialmente. Garante a atomicidade da transação. Usa a gravação de log mas adia todas as operações Write de uma transação até que uma transação seja parcialmente confirmada (ação final foi executada). 38 38 38 38 38 38

39 Sistema de Recuperação
Modificação de banco de dados adiada 1) Um registro <Ti start> é escrito no log antes da transação Ti iniciar sua execução. 2) Toda operação write(x) de Ti, resulta em um novo registro no log. 3) Quando Ti é parcialmente efetivada, um registro <Ti commit> deve ser escrito no log. 4) Assim que a transação é parcialmente efetivada, os registros no log podem ser usados para atualizar o banco de dados e a transação entra em seu estado de efetivação. Neste momento, deve-se garantir que o log esteja armazenado em meio estável. 39 39 39 39 39 39

40 Sistema de Recuperação
Modificação de banco de dados adiada Também chamadas de NO-UNDO/REDO. Nesta técnica, somente o valor novo do item de dado que sofreu alteração é necessário ser guardado no registro de log, pois: 1) Somente escalonamentos seriais estão sendo considerados; 2) As escritas são realizadas após a efetivação parcial da transação; No caso de falhas: Antes das escritas no BD: os registros no log serão ignorados (o valor antigo do item de dado permanecerá). Após as escritas no BD: executa-se operações de redo. Ver exemplo anexo 40 40 40 40 40 40

41 Sistema de Recuperação
Modificação de banco de dados adiada Log BD <T0, start> <T0, A, 950> <T0, B, 2050> <T0, commit> A = 950 B = 2050 <T1, start> <T1, C, 600> <T1, commit> C = 600 41 41 41 41 41 41

42 Sistema de Recuperação
Modificação de banco de dados adiada Recuperação Procedimento de recuperação em caso de falhas, que resultem em perda de informação no armazenamento volátil: Redo(T): Refazer T define o valor de todos os itens de Ti dados atualizados pela transação Ti para os novos valores (operação idempotente) . Uma transação Ti deverá ser refeita, se e somente se, o sistema de recuperação encontrar os registros <Ti, start> e <Ti, commit> no log. 42 42 42 42 42 42

43 Sistema de Recuperação
Modificação de banco de dados adiada Exemplos de falha durante a transação A B C <T0 start> <T0 start> <T0 start> <T0, A, 950> <T0, A, 950> <T0, A, 950> <T0, B, 2050> <T0, B, 2050> <T0, B, 2050> <T0 commit> <T0 commit> <T1 start> <T1 start> <T1, C, 600> <T1, C, 600> <T1 commit> 43 43 43 43 43 43

44 Sistema de Recuperação
Modificação de banco de dados adiada Ações para o exemplo anterior: (a) Nenhuma ação redo é necessária (b) É necessário realizar redo(T0), uma vez que há um <T0 commit> registrado (c) Realizar redo(T0) seguido de redo(T1), uma vez que <T0 commit> e <T1 commit> estão registrados no log. 44 44 44 44 44 44

45 Sistema de Recuperação
Modificação imediata de banco de dados Permite que as modificações no banco de dados sejam realizadas enquanto as transações ainda estão num estado ativo. As escritas emitidas por transações ativas são chamadas de modificações não-confirmadas. Neste esquema de modificação de BD, o log deverá armazenar o valor antigo e o valor novo oriundos das operações de write. 45 45 45 45 45 45

46 Sistema de Recuperação
Modificação imediata de banco de dados Execução de Transação Um registro <Ti start> é criado antes da transação Ti iniciar sua execução. Toda operação write(X) de Ti é precedida pela escrita de um novo registro no log. Quando T é parcialmente efetivada, um registro <Ti commit> deve ser escrito no log. As informações podem ser atualizadas no banco de dados assim que o log esteja salvo em meio estável. 46 46 46 46 46 46

47 Sistema de Recuperação
Modificação imediata Log BD <T0, start> <T0, A, 1000, 950> <T0, B, 2000, 2050> A = 950 B = 2050 <T0, commit> <T1, start> <T1, C, 700, 600> <T1, commit> C = 600 47 47 47 47 47 47

48 Sistema de Recuperação
Modificação imediata Exemplos de falha durante a transação A B C <T0 start> <T0 start> <T0 start> <T0, A, 950> <T0, A, 950> <T0, A, 950> <T0, B, 2050> <T0, B, 2050> <T0, B, 2050> <T0 commit> <T0 commit> <T1 start> <T1 start> <T1, C, 600> <T1, C, 600> <T1 commit> EXEMPLO ANEXO 48 48 48 48 48 48

49 Sistema de Recuperação
Modificação imediata Ações para o exemplo anterior: (a) undo (T0): B é restaurado para 2000 e A para 1000. (b) undo (T1) e redo (T0): C é restaurado para 700, e então, A e B são retornam aos valores 950 e 2050, respectivamente. (c) redo (T0) and redo (T1): Os valores de A, B e C na conta, após esses procedimentos, são 950, 2050 e 600, respectivamente. 49 49 49 49 49 49

50 Sistema de Recuperação
Modificação imediata 50 50 50 50 50 50

51 Sistema de Recuperação
Pontos de verificação (Checkpoints) Na existência de uma falha, o sistema de recuperação deve, a princípio, percorrer todo o log para saber quais transações devem ser desfeitas. Dificuldades: 1) O processo de pesquisa consome tempo; 2) Muitas das transações que necessitam ser refeitas já escreveram suas atualizações no BD. Embora refazê-las não cause dano algum, a recuperação se tornará mais onerosa. Para melhorar isto, existem os checkpoints. 51 51 51 51 51 51

52 Sistema de Recuperação
Pontos de verificação (Checkpoints) Os checkpoints são registros inseridos no log periodicamente e exigem a execução da seqüência de operações abaixo: Suspender, temporariamente, a execução de todas as transações. Forçar as escritas das operações de write das transações, da memória principal para o disco. Escrever <checkpoint> no log e forçar a escrita no log em disco. Reassumir a execução das transações. 52 52 52 52 52 52

53 Sistema de Recuperação
Pontos de verificação (Checkpoints) Se Ti é efetivada antes do checkpoint, o registro <Ti,commit> aparece no log antes do checkpoint, quaisquer modificações feitas por Ti ou já foram escritas no banco de dados antes do checkpoint ou o foram como parte do ckeckpoint propriamente dito. Assim, no momento de recuperação não haverá necessidade de uma operação de redo sobre Ti. 53 53 53 53 53 53

54 Sistema de Recuperação
Pontos de verificação (Checkpoints) Após uma falha o sistema de recuperação examina o log para determinar a última transação Ti anterior ao checkpoint mais recente. A pesquisa é retroativa no log e procura a última transação T anterior ao checkpoint mais recente (o último registro <Ti, start> antes do checkpoint). As operações de undo e redo devem ser aplicadas, de forma apropriada, a Ti e a todas as transações Tj que iniciaram depois dela. 54 54 54 54 54 54

55 Sistema de Recuperação
Pontos de verificação (Checkpoints) As operações de recuperação exigidas, se a técnica de modificação imediata é empregada, são as seguintes: Para todas as transações Tk em T que não possuem nenhum registro <T , commit> no log, execute undo(Tk). Para todas as transações Tk em T tais que o registro <Tk, commit> aparece no log, execute redo(Tk) Se a técnica de modificação adiada está em uso, nenhuma operação de undo será aplicada. 55 55 55 55 55 55

56 Sistema de Recuperação
Pontos de verificação (Checkpoints) 56 56 56 56 56 56

57 Sistema de Recuperação
Pontos de verificação (Checkpoints) Considere as transações {T0, T1, ... T100}, executadas nesta ordem. Suponha que o checkpoint mais recente tenha ocorrido durante a execução da transação T80. Então somente as transações T80 até T100 necessitam ser consideradas durante o esquema de recuperação. As outras estão consistentes. Cada uma delas será refeita se tiver sido efetivada (redo). Caso contrário, será desfeita (undo) 57 57 57 57 57 57

58 Sistema de Recuperação
Recuperação com transações concorrentes A partir de agora, será considerado que existe concorrência no SGBD. Os esquemas de recuperação precisam ser melhor projetados para atender este requisito, garantindo a consistência. Considerações: 1) um único buffer de disco e log único 2) Todas as transações compartilham os blocos de buffer (memória) 3) A modificação imediata é permitida e os itens de dados no bloco de buffer atualizados por uma ou mais transações. 58 58 58 58 58 58

59 Sistema de Recuperação
Interação com controle de concorrência Suponha que uma transação T0 tenha que ser desfeita e um item de dado Q, atualizado por T0, tenha que recuperar seu valor antigo. Para isso, utiliza-se as informações registradas no log e a operação undo. Suponha ainda que uma segunda transação T1 também tenha realizado uma atualização sobre Q antes de T0 ser desfeita. Esta atualização, processada por T1, será perdida quando T0 for revertida. Para evitar esta situação, usa-se o bloqueio em duas fases que mantém os bloqueios de escrita até o final da transação (bloqueios exclusivos) 59 59 59 59 59 59

60 Sistema de Recuperação
Reversão da transação A reversão de uma transação Ti é realizada da seguinte forma: 1) O log é percorrido, do fim para o início; 2) Para cada registro da forma <Ti, Xj, V1, V2>, o item de dados X j é restaurado para seu valor antigo V1; 3) O trabalho termina quando o registro <Ti, start> é encontrado. Por que percorrer o log de trás para a frente ? Porque uma transação pode ter atualizado um item de dados mais de uma vez. Se uma transação atualiza um mesmo item de dados duas vezes: <Ti START> <Ti, A, 10, 20> <Ti, A, 20, 30> 60 60 60 60 60 60

61 Sistema de Recuperação
Reversão da transação Quando se está revertendo uma transação, o protocolo de bloqueio deve manter os bloqueios de escrita da transação, até que o trabalho de reversão seja concluído. Como se está supondo o uso do protocolo de bloqueio em duas fases, nenhuma outra transação terá que ser revertida por ocasião da reversão de outra transação. 61 61 61 61 61 61

62 Sistema de Recuperação
Reversão da transação Para situações onde a concorrência não existe, o uso dos checkpoints faz com que na recuperação: As transações que iniciaram após o checkpoint mais recente; A transação, se houver alguma, que estava ativa no momento da escrita do checkpoint mais recente. Quando existe concorrência, várias transações podem estar ativas no momento em que o checkpoint for inserido no log. Assim, o registro de log referente ao checkpoint será da forma <checkpoint L>, onde L é a lista de transações ativas no momento de inserção do checkpoint. 62 62 62 62 62 62

63 Sistema de Recuperação
Recuperação passo a passo Para a recuperação com transações concorrentes, o sistema deve construir duas listas: Lista desfazer (undo): composta por transações que devem ser desfeitas. Lista refazer (redo): composta por transações que devem ser refeitas. 63 63 63 63 63 63

64 Sistema de Recuperação
Recuperação passo a passo A construção das lista undo e redo: Inicialmente, ambas as listas estão vazias; Examina-se o log, em ordem decrescente, até o primeiro checkpoint: Para cada registro <Ti, commit>, adiciona-se Ti à lista refazer. Para cada registro <Ti, start>, se Ti não está na lista refazer, adiciona-se Ti na lista desfazer. Checa-se a lista L no registro do checkpoint em questão. Para cada transação Ti em L, se Ti não estiver da lista refazer, então será adicionada à lista desfazer. Ou seja: toda transação do Checkpoint sofrerá redo ou undo. 64 64 64 64 64 64

65 Sistema de Recuperação
Recuperação passo a passo Com as listas construídas: 1) Reexaminar o log a partir do registro mais recente e processar um UNDO para cada registro de log pertencente à transação Ti na lista desfazer. O exame para quando os registros <Ti start>, para cada transação Ti da lista desfazer, são encontrados (percorre-se o log em ordem cronológica decrescente). A lista refazer é desprezada neste momento; 2) Localizar o registro <checkpoint L> mais recente; 3) Examinar o log a partir do registro <checkpoint L> encontrado, até o final do log e executar um redo para cada registro de log pertencente a uma transação Ti que está na lista refazer (percorre-se o log em ordem cronológica crescente). A lista de undo é desprezada neste momento. 65 65 65 65 65 65

66 Sistema de Recuperação
Recuperação passo a passo A ordem de execução importa ? Considere abaixo: <Ti A, 10, 20> <Tj A, 10, 30> <Tj commit> ** falha ** Se redo for realizado primeiro, A será 30. Depois, será feito um undo e A passará a ser 10 (errado). Se undo for realizado primeiro, A será 10. Depois, será feito um redo e A passará a ser 30 (correto). 66 66 66 66 66 66

67 Prof. Alessandro Gonçalves
UNDB BANCO DE DADOS II Prof. Alessandro Gonçalves 67 67 67 67 67 67


Carregar ppt "Prof. Alessandro Gonçalves"

Apresentações semelhantes


Anúncios Google