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

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

1 Gabriel David FEUP - Rua dos Bragas, 4099 Porto Codex - PORTUGAL Tel. 351-2-2041842 - Fax: 351-2-319280 URL:

Apresentações semelhantes


Apresentação em tema: "1 Gabriel David FEUP - Rua dos Bragas, 4099 Porto Codex - PORTUGAL Tel. 351-2-2041842 - Fax: 351-2-319280 URL:"— Transcrição da apresentação:

1 1 Gabriel David FEUP - Rua dos Bragas, 4099 Porto Codex - PORTUGAL Tel. 351-2-2041842 - Fax: 351-2-319280 Email: gtd@fe.up.pt URL: http://www.fe.up.pt Gestão de transacções m noções básicas m modelo simples m modelo elaborado m recuperação m marcas temporais

2 Concorrência - 2 Execução série - um programa de cada vez versus Execução concorrente - vários programas partilham o CPU Execução de programas Problema: garantir que os vários programas não interferem de forma inesperada

3 Concorrência - 3 Programas e BD m Transacção q uma execução de um programa q podem coexistir várias transacções do mesmo programa m Interacção transacção/BD q transacção lê dados da BD para o seu espaço de trabalho q cálculos feitos no espaço de trabalho completamente isolados q transacção escreve resultados do espaço de trabalho para a BD BD P1 P2 T1 T2 T3

4 Concorrência - 4 Tipos de acesso m Programas executados em série q modelo na cabeça do programador m Acesso simultâneo para leitura e escrita q sistema de reservas - Programa: READ A; A=A+1; WRITE A; q Problema da actualização falhada: dois acessos diferentes reservarem o mesmo lugar m Acesso simultâneo só para leitura q recenseamento q sem interferência A(BD)555566 T 1 :READ AA=A+1WRITE A T 2 :READ AA=A+1WRITE A A(T 1 )556666 A(T 2 )5566

5 Concorrência - 5 Propriedades das transacções m SGBD deve manter as propriedades ACID q atomicidade - as operações da transacção efectivam-se na BD ou todas ou nenhuma q consistência - transacção sozinha preserva consistência da BD q isolamento - as transacções apesar de concorrentes não interferem; para cada par T l - T k o efeito final é o de executar T l e depois T k, ou T k e depois T l q durabilidade - efeitos de uma transacção com sucesso persistem na BD mesmo em caso de avarias no sistema m consistência q primariamente um problema do programador da transacção q SGBD pode verificar automaticamente regras de integridade

6 Concorrência - 6 Atomicidade m Importante também para manter a consistência m Operação Transferência bancária T(valor, conta_origem, conta_destino) 1 READ conta_origem 2 conta_origem= conta_origem - valor 3 WRITE conta_origem 4 READ conta_ destino 5 conta_ destino = conta_ destino + valor 6 WRITE conta_ destino q interrupção em 4 deixa BD inconsistente m Razões para quebra de atomicidade q avaria de hardware q erro de software q bloqueio em competição por recursos

7 Concorrência - 7 Bloqueios m Isolamento entre transacções q dividir a BD em itens, recursos necessários para as transacções q item - unidade de dados, desde a BD à tabela, linha ou campo q controlo de acesso através do bloqueio de itens m Gestor de bloqueios q regista, para cada item I, quais as transacções que estão a ler ou escrever alguma parte de I q controla o acesso de uma segunda transacção, de acordo com uma determinada política q granularidade dos itens condiciona peso da gestão de bloqueios; transacção típica deve bloquear poucos itens m Bloqueio (lock) q é um privilégio de acesso a um item q primitiva de sincronização

8 Concorrência - 8 Gestão da concorrência m Controlar item com bloqueio q pedir bloqueio de A antes da leitura q outras transacções que tentem bloquear A esperam q desbloquear A depois da escrita m Reserva de lugar q Programa: LOCK A; READ A; A=A+1; WRITE A; UNLOCK A; q garante isolamento A(BD)55556667 T 1 :LOCK AREAD AA=A+1WRITE AUNLOCK A T 2 :LOCK A … A(T 1 )56666 A(T 2 )67

9 Concorrência - 9 Problemas m Bloqueio activo (livelock) q T 1 e T 2 pedem bloqueio de A; T 1 obtém; T 3 pede bloqueio de A; quando T 1 desbloqueia, T 3 é servido e T 2 fica à espera… q hipótese de resolução: servir sempre o pedido mais antigo m Encravamento (deadlock) T 1 : LOCK A; LOCK B; UNLOCK A; UNLOCK B; T 2 : LOCK B; LOCK A; UNLOCK B; UNLOCK A; q T1 bloqueia A e T2 bloqueia B; ambos ficam parados à espera que o outro desbloqueie q hipótese 1: obrigar a transacção a pedir todos os bloqueios de uma vez e o gestor concede todos ou nenhum q hipótese 2: atribuir uma ordem aos itens e os pedidos de bloqueio serem feitos por essa ordem q hipótese 3: não prevenir; SGBD verifica se há encravamento e aborta uma das transacções

10 Concorrência - 10 Escalonamento m Escalonamento de um conjunto de transacções q ordem de execução dos passos elementares das várias transacções q T 1 : READ A; A=A-10; WRITE A; READ B; B=B+10; WRITE B; q T 2 : READ B; B=B-20; WRITE B; READ C; C=C+20; WRITE C; T 1 T 2 READ A A=A-10 WRITE A READ B B=B+10 WRITE B READ B B=B-20 WRITE B READ C C=C+20 WRITE C T 1 T 2 READ A READ B A=A-10 B=B-20 WRITE A WRITE B READ B READ C B=B+10 C=C+20 WRITE B WRITE C T 1 T 2 READ A A=A-10 READ B WRITE A B=B-20 READ B WRITE B B=B+10 READ C WRITE B C=C+20 WRITE C (B=B-10) (B=B+10)

11 Concorrência - 11 Seriabilidade m Escalonamento série (caso ) q todos os passos de cada transacção executados consecutivamente m Escalonamento serializável (caso ) q efeito equivalente a um qualquer escalonamento série m Escalonamento não serializável (caso ) q a evitar (!), mas sem olhar para expressões calculadas, apenas para a sequência de operações e bloqueios m Escalonador q parte do SGBD que arbitra conflitos entre transacções q recebe informação do gestor de bloqueios q evita bloqueio activo, encravamento e não seriabilidade q fica facilitado se as transacções seguirem protocolos adequados q escalonamento legal se não violar bloqueios

12 Concorrência - 12 Modelo simples m Assume-se que bloquear implica ler e desbloquear escrever q modelo simples é não fatal: pode impedir escalonamentos serializáveis, mas não aceita não serializáveis m Teste de seriabilidade de um escalonamento q criar um grafo dirigido cujos nós são as transacções q para cada passo T k : UNLOCK A m, se existir a seguir um passo T l : LOCK A m, desenhar um arco de T k para T l. q escalonamento serializável se não houver ciclos no grafo q as setas indicam a ordem de um escalonamento série equivalente (ordenação topológica)

13 Concorrência - 13 Teste de seriabilidade m Não serializável q T 2 deve correr antes de T 1 e vice-versa T 1 T 2 T 3 LOCK A LOCK B LOCK C UNLOCK B LOCK B UNLOCK A LOCK A UNLOCK C UNLOCK A LOCK A LOCK C UNLOCK B UNLOCK C UNLOCK A T3T3 T2T2 T1T1

14 Concorrência - 14 m Problema: garantir a seriabilidade q combinação escalonador + protocolo q protocolo de bloqueio em duas fases: todos os bloqueios (1ª fase) são pedidos antes de todos os desbloqueamentos (2ª fase) q trabalho do escalonador: basta conceder o bloqueio se estiver disponível e suspender ou abortar a transacção caso não esteja, isto é, só se verifica a legalidade da transacção q garante-se que qualquer escalonamento legal é serializável q um escalonamento série correspondente é o dado pela ordem dos pontos de bloqueio das várias transacções ponto de bloqueio é o instante em que ocorre o último bloqueio; considera-se que todo o processamento ocorre nesse instante, antes de começar a desbloquear q verificar coerência com grafo de seriabilidade T 2 (pág anterior) não respeita bloqueio em duas fases Bloqueio em duas fases

15 Concorrência - 15 Contra-exemplo m T 1 não é de duas fases não serializável q T 1 : LOCK A; UNLOCK A; LOCK B; UNLOCK B q T 2 : LOCK A; LOCK B; UNLOCK A; UNLOCK B q T 1 T 2 LOCK A … UNLOCK A LOCK A LOCK B UNLOCK A UNLOCK B LOCK B UNLOCK B m conclusão: bloqueio em duas fases é óptimo T1T1 T2T2

16 Concorrência - 16 Bloqueios partilhados m Elaborar o modelo para aumentar a concorrência m distinguir transacções que não alteram a BD m bloqueio partilhado (ou de leitura) RLOCK A q pedido por transacções que só pretendam ler o item q impede outra transacção de escrever q pode haver mais transacções com RLOCK em A m bloqueio exclusivo (ou de escrita) WLOCK A q pedido por transacções que pretendam escrever o item q idêntico ao do modelo simples: mais nenhum bloqueio é aceite q transacção com RLOCK pode pedir um WLOCK m UNLOCK desbloqueia ambos

17 Concorrência - 17 Novo teste de seriabilidade m Escalonamentos equivalentes q produzem o mesmo valor para cada item q cada bloqueio partilhado ocorre em ambos os escalonamentos em momentos em que o item tem o mesmo valor m Teste de seriabilidade com bloqueios partilhados q criar um grafo dirigido cujos nós são as transacções q para cada passo T k : RLOCK A m ou WLOCK A m, se existir a seguir um passo T l : WLOCK A m, com k l, desenhar um arco de T k para T l. q para cada passo T k : WLOCK A m, se a seguir a T k desbloquear A m e antes de outro WLOCK A m existir um passo T l : RLOCK A m, com k l, desenhar um arco de T k para T l. q escalonamento serializável se não houver ciclos no grafo q ordenação topológica é um escalonamento série equivalente

18 Concorrência - 18 Exemplo q Bloqueio em duas fases garantiria escalonamento serializável T 1 T 2 T 3 T 4 WLOCK A RLOCK B UNLOCK A RLOCK A UNLOCK B WLOCK B RLOCK A UNLOCK B WLOCK B UNLOCK A WLOCK A UNLOCK B RLOCK B UNLOCK A UNLOCK B T3T3 T2T2 T1T1 T4T4 Não serializável

19 Concorrência - 19 Recuperação de falhas m Razões para ocorrerem falhas 1 falha na transacção (interrupção do utilizador; divisão por zero; tentativa de acesso a dados não autorizados) 2 deadlock: o escalonador aborta a transacção para libertar outras 3 transacção abortada para garantir a seriabilidade 4 erro de hardware ou de software provoca falha no SGBD m falhas que envolvam destruição de memória permanente podem exigir recurso ao arquivo de dados (backup) m pretende-se que o SGBD seja resistente aos outros tipos de falhas (quer nos casos de falha de só uma transacção, quer nos de falha do sistema)

20 Concorrência - 20 Cometimento m Transacção q activa - ainda em processamento q completa - já não é possível abortar pelas razões (1) a (3) q terminada m Ponto de cometimento q momento em que todos os bloqueios estão obtidos e todo o processamento está efectuado q esse momento é marcado por uma instrução COMMIT m Dados sujos q são dados escritos na BD antes de a transacção ter cometido q outra transacção que leia tais dados arrisca-se a ficar com valores inconsistentes, no caso de a primeira abortar

21 Concorrência - 21 Leitura de dados sujos m Ocorrendo uma falha no passo (14) é preciso 1 - remover o bloqueio em B 2 - repor o valor de A anterior ao início de T 1 (jornal) 3 - (uma vez que o valor de A lido por T 2 está errado) desfazer todos os efeitos de T 2 e voltar a corre-la 4 - se alguma transacção T 3 tiver lido algum valor alterado por T 2, também terá que ser desfeita, etc. T 1 T 2 (1)LOCK A (2)READ A (3)A:= A-1 (4)WRITE A (5) LOCK B (6)UNLOCK A (7)LOCK A (8)READ A (9)A:= A*2 (10)READ B (11)WRITE A (12)COMMIT (13)UNLOCK A (14)B:=B/A

22 Concorrência - 22 Bloqueio em duas fases estrito m O fenómeno de ter que desfazer (rollback) várias transacções devido à falha de uma designa-se desfazer em cascata m protocolo de bloqueio em duas fases estrito q uma transacção não pode escrever na BD até atingir o ponto de cometimento q não se liberta nenhum bloqueio até se acabar de escrever na BD m a primeira condição é necessária se não se conseguir repor valores antigos de itens em caso de falha m este protocolo evita a necessidade de suportar desfazer em cascata

23 Concorrência - 23 Aspectos de desempenho m Compromisso entre (1) obter a melhor taxa de execução (throughput) - número de transacções terminadas por unidade de tempo, para uma determinada mistura de transacções (2) conseguir que cada transacção individual termine sem excessivo atraso m Para melhorar (1) q minimizar o overhead do escalonador (bloqueios, sequenciação de transacções, detecção de encravamentos) q minimizar o tempo gasto em transacções que acabam por abortar e a eliminar bloqueios que sobraram q minimizar o tempo gasto a repor a BD em caso de desfazer em cascata (se o protocolo não for de duas fases estrito)

24 Concorrência - 24 Início da transacção m Já se viu como disciplinar o fim das transacções q ponto de cometimento q e o início? Depende dos casos. m Protocolo agressivo q escalonador simples e rápido mesmo que acabe por cair numa situação em que deva abortar q espera-se que o tempo a resolver encravamentos seja menor que o que seria gasto a gerir os bloqueios m Protocolo conservador q evita-se fazer a primeira parte da transacção se não houver garantias de ela se possa completar

25 Concorrência - 25 Protocolo conservador m Transacção começa por pedir, no início, todos os bloqueios de que vai necessitar e ou são todos concedidos ou nenhum e vai para fila de espera q problema: bloqueio activo (pode haver sempre uma transacção a bloquear um dos itens requeridos em cada momento) q exemplo do cálculo do saldo global de uma agência bancária pode haver sempre um movimento a ser efectuado política FIFO pode pendurar transacções pequenas até a grande poder avançar é necessário ver se cada transacção está a pedir recursos que estejam bloqueados ou que virão a ser bloqueados por transacções mais antigas na fila de espera q pedir os bloqueios a priori pode obrigar a bloquear demais bloquear toda uma tabela em vez de apenas os blocos que ao longo do processamento do índice se mostrarem relevantes

26 Concorrência - 26 Protocolo agressivo m Transacção pede bloqueio num item mesmo antes de o ler ou escrever q primeiro RLOCK e depois, antes de escrever, WLOCK q continua a desbloquear só depois de todos os bloqueios (2 fases) q continua a desbloquear só depois de estar tudo escrito na BD (2 fases estrito) q sujeito a encravamento por pedido cruzado de dois itens q novo tipo de encravamento: duas transacções que detenham RLOCK no mesmo item e peçam ambas a respectiva promoção a bloqueios de escrita m Como escolher? q depende do padrão de bloqueios típico probabilidade de bloqueio simultâneo do mesmo item baixa agressivo ocorrência frequente de bloqueios não disponíveis conservador

27 Concorrência - 27 Recuperação m Como garantir a integridade da informação, em caso de avarias de HW ou SW q forma de suportar a reposição de um estado consistente da informação na memória estável (BD em disco) q suportar tecnicamente metáfora da atomicidade das transacções m Falhas mais graves q avaria do meio de armazenamento ou memória estável q recuperação baseada em reposição de cópias de segurança m Falhas menos graves q falhas do sistema (corte de alimentação) que afectam a memória volátil q há técnicas para lidar com estas situações

28 Concorrência - 28 O jornal da BD m técnica base: construir um jornal (log) para registar as alterações na BD, com linhas dos tipos: q (T, begin) marca início da transacção T q (T, I, a, v) para cada escrita do valor v no item I o valor anterior a é necessário no caso de se pretender desfazer T codificar apenas alterações no caso de o item ser muito grande q (T, commit) no ponto de cometimento q (T, abort) em caso de cancelamento

29 Concorrência - 29 Análise do jornal m Exemplo de jornal: passo entrada antes de (1)(T 1, begin) (4) (T 1, A, 10, 9) antes de (7) (T 2, begin) (11) (T 2, A, 9,18) (12) (T 2 commit) depois de (14) (T 1, abort) m após a falha, a rotina de recuperação analisa o jornal q conclui que T 1 abortou ou pelo menos nunca chegou ao cometimento q os seus efeitos têm que ser desfeitos q valor antigo requerido para repor situação inicial q relançar T 1 q T 2 tem também que ser desfeita e relançada implica registar leituras e ligar transacção ao código respectivo T 1 T 2 (1)LOCK A (2)READ A (3)A:= A-1 (4)WRITE A (5) LOCK B (6)UNLOCK A (7)LOCK A (8)READ A (9)A:= A*2 (10)READ B (11)WRITE A (12)COMMIT (13)UNLOCK A (14)B:=B/A

30 Concorrência - 30 Protocolo Refazer m Objectivo: nunca desfazer transacções q refina protocolo de duas fases estrito m Acções ao atingir o cometimento da transacção T 1) para cada item I alterado para o valor v pôr no jornal (T,I,v) 2) acrescentar (T, commit) 3) escrever em memória estável os blocos do jornal que faltarem - aqui T fica cometida 4) para cada item I escrever o seu valor na BD pode apenas significar trazer para a memória central o bloco que contém I e actualizá-lo, ficando a escrita dependente da política de paginação

31 Concorrência - 31 Algoritmo de recuperação m Examina o jornal e repõe a BD num estado consistente q resulta da aplicação de determinada sequência de transacções q o sistema deve libertar os bloqueios existentes na altura da falha m Aplica-se a transacções que sigam o protocolo refazer q examinar o jornal inversamente, determinando as transacções T com entrada (T, commit) q transacções não cometidas ou com uma entrada (T, abort) ignoram-se é como se não tivessem existido; registando qual o procedimento e parâmetros é possível relançar a transacção depois de estabilizar q percorrer o jornal desde o início e, para cada entrada (T, I, v) de uma transacção cometida, escrever v no item I da BD m Refazer reaproveita todo o cálculo efectuado; relançar desperdiça-o e repete a transacção

32 Concorrência - 32 Transacção e jornal q Transacção que segue o protocolo refazer cálculos entre (3) e (4) escrita no jornal deve ser efectivada em disco mal a transacção esteja cometida, entre (6) e (7) actualização da BD pode ter um algoritmo mais elaborado de paginação q Recuperar falha antes de (6) - ignorada (relançar T) falha depois de (6) - refazer (4) e (5) Tjornal (1) (T, begin) (2)LOCK A (3)LOCK B (4)(T,A,v) (5)(T,B,w) (6)(T, commit) (7)WRITE A (8)WRITE B (9)UNLOCK A (10)UNLOCK B

33 Concorrência - 33 Ponto de verificação m Até onde percorrer o jornal numa recuperação? m Operação de verificação (checkpoint) q proibir o início de transacções e esperar que as activas estejam cometidas ou abortem q copiar os blocos alterados na memória central para memória estável q registar no jornal o ponto de verificação e escrever o jornal m Só é necessário analisar o jornal até ao último ponto de verificação, para recuperar de uma falha q a parte anterior do jornal só interessa para arquivo de segurança

34 Concorrência - 34 Falha no disco m Avaria no meio de armazenamento q manter cópias de segurança ou arquivo em linha (replicação) q a cópia de segurança é feita após um ponto de verificação q usar discos distintos e em locais distintos q ter duas cópias do jornal em locais distintos q recuperar é repor a última cópia geral, as incrementais seguintes e aplicar a recuperação ao jornal (refazer) desde essa altura

35 Concorrência - 35 Marcas temporais m Manutenção da seriabilidade sem bloqueio em duas fases q podia-se construir o grafo de dependências nas leituras e escritas e impedir o aparecimento de ciclos - não prático q associar a cada transacção um instante correspondente ao seu início; escalonamento deve garantir que a ordem desses instantes é a respectiva ordem série equivalente T 1 T 2 (1)READ B (2)READ A (3)WRITE C (4)WRITE C T 1 T 2 T 3 (1)READ A (2) READ A (3)READ D (4)WRITE D (5)WRITE A (6)READ C (7)WRITE B (8)WRITE B Serializável por bloqueios [e não ao contrário] serializável por instantes

36 Concorrência - 36 Reforçar a seriabilidade m Objectivo do escalonamento com marcas temporais q resultado final equivalente a executar a transacção toda no instante atribuído q associar a cada item o instante da transacção que fez a última leitura e a última escrita m Proibido q transacção com instante t 1 ler item com instante de escrita t 2 > t 1 q transacção com instante t 1 escrever num item com instante de leitura t 2 > t 1 m Transacção que tentasse furar o esquema seria abortada e reiniciada q problema da leitura de dados sujos q possibilidade de desfazer em cascata

37 Concorrência - 37 Controlo por marcas temporais m Indicam-se os valores iniciais dos instantes das marcas q T 2 forçada a abortar: tentava, com T 2 =150, escrever num dado já lido no futuro TL=200. T 1 T 2 T 3 A B C 200150175TL=0TL=0TL=0 TE=0TE=0TE=0 (1)READ BTL=200 (2)READ A TL=150 (3) READ CTL=175 (4)WRITE B TE=200 (5)WRITE ATE=200 (6)WRITE C T2 aborta (7) WRITE A


Carregar ppt "1 Gabriel David FEUP - Rua dos Bragas, 4099 Porto Codex - PORTUGAL Tel. 351-2-2041842 - Fax: 351-2-319280 URL:"

Apresentações semelhantes


Anúncios Google