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

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

Transações Prof: Galina Resumo baseado no livro do Silberschatz e Elmasri Capítulo 15 e 17 (respectivos): Transações.

Apresentações semelhantes


Apresentação em tema: "Transações Prof: Galina Resumo baseado no livro do Silberschatz e Elmasri Capítulo 15 e 17 (respectivos): Transações."— Transcrição da apresentação:

1 Transações Prof: Galina Resumo baseado no livro do Silberschatz e Elmasri Capítulo 15 e 17 (respectivos): Transações

2 Roteiro • Conceito • Propriedades ACID • Estados da transação • Implementação de Atomicidade e Durabilidade • Execuções concorrentes • Serialização – Serialização de conflito • Recuperação – Escalas de execução recuperáveis – Escalas sem cascata • Implementação do isolamento

3 Conceito • Coleção de operações que desempenha uma função lógica única dentro de uma aplicação. • Exemplo – transferência entre contas bancárias • uma operação única do ponto de vista do usuário – várias operações! • É uma unidade de execução de programa que acessa, e possivelmente atualiza, vários itens de dados • Sistemas de BD devem garantir a execução apropriada das transações em caso de falhas e execução simultânea

4 Problema 1 – Atualizaçao Perdida • Resevas de cia aérea armazenado registros de Voo da cia • Cada registro contem o número depoltronas reservada para o voo. • Figura ao lado representa : T1 transfere N reservas de um voo, cujo numero de assentos reservados está armazenado em um item de dados chamado X, para um outro voo, cujo número de de assentos reservados está armazenado em um item de dados chamado Y.

5 Qual o problema??? • Se duas transaçoes acessarem os mesmos itens com operaçoes intercaladas. • Suponha T1 e T2, sejam submetidas aproximadamente ao mesmo tempo. • Qual o valor final de X? • T2 – Lerá o valor de x antes de T1 mudá-lo no banco, portanto o valor atualizado resultando de T1 será perdido. • Testem com os seguintes valores • X=80 • N=5 • M=4 • O resultado deveria ser 79 porém resulta 84 pois perdeu-se a remoção dos 5 assentos.

6 Problema 2 – Dirty read • T1 autaliza um item de bd, e a seguir, PAUSSS… • Logo em seguida T2 maldita acessa estes dados antes de T1 fazer rollback!? E agora?!! • T2 nao pode ser gravado em BD por que T1 falhou, o BD deve tratar esta inconsistência, senão PAUUU..

7 Problema 3 – Sumário Incorreto • T3 Está calculando o número total de reservas em todos os voos • Enquanto isso… T1 disparaaaaa.. • Se acontecer a intercalação de operações mostrado ao lado • O resultado de T3 não contabilizará N, pois T3 leu o valor de X depois que os N assentos foram subtraídos, mas lerá o valor Y antes que esses N assentos tenham sido add a ele. Total de reservas Levando valores de y

8 Como o SGBD resolve isso tudo!? • Tio ACID • A – ATOMICIDADE • C – CONSISTENCIA • I – ISOLAMENTO • D - DURABILIDADE

9 Propriedades ACID • Atomicidade: ou todas as operações das transações são refletidas corretamente no banco de dados ou nenhuma será. • Consistência: a execução de uma transação isolada (ou seja, sem a execução concorrente de outra transação) preserva a consistência do banco. • Isolamento: cada transação não toma conhecimento de outras transações concorrentes no sistema. • Durabilidade: depois de uma transação completar-se com sucesso, as mudanças que ela faz no banco persistem.

10 SGBD sob ótica de Ger. Transações

11 • O acesso ao banco de dados é obtido pelas seguintes operações: – Read(X): transfere um dado X do banco para um buffer local. – Write(X): transfere um dado X do buffer local para o banco de dados. • Ex: T1 transfere 50 reais da conta A para a conta B: T1: read(A) A=A-50 Write(A) Read(B) B=B+50 Write(B) Operações read e write

12 Passos para para Read

13 Write

14 Propriedades no exemplo nTransação para transferir US$ 50 da conta A para a conta B: •1.read(A) •2.A := A – 50 •3.write(A) •4.read(B) •5.B := B + 50 •6.write(B) nRequisito de atomicidade — Se a transação falhar após a etapa 3 e antes da etapa 6, o sistema deve garantir que suas atualizações não sejam refletidas no banco de dados, ou uma inconsistência irá resultar. nRequisito de consistência — A soma de A e B é inalterada pela execução da transação.

15 Propriedades no exemplo nRequisito de isolamento — Se entre as etapas 3 e 6, outra transação receber permissão de acessar o banco de dados parcialmente atualizado, ele verá um banco de dados inconsistente (a soma A + B será menor do que deveria ser). Isso pode ser trivialmente assegurado executando transações serialmente, ou seja, uma após outra. Entretanto, executar múltiplas transações simultaneamente oferece vantagens significativas, como veremos mais adiante. nRequisito de durabilidade — Quando o usuário é notificado de que a transação está concluída (ou seja, a transação dos US$ 50 ocorreu), as atualizações no banco de dados pela transação precisam persistir a pesar de falhas.

16 • Consistência – a soma de A com B deve permanecer inalterada após a execução da transação – assegurar a consistência • responsabilidade do programador da aplicação • Atomicidade – não pode ocorrer pela metade – o sistema mantém um registro dos valores antigos dos dados sobre os quais a transação executa uma gravação • se a transação não se completar – valores antigos são restabelecidos para fazer com que pareça que ela nunca foi executada – assegurar atomicidade é responsabilidade do SGBD • gerenciador de transações (gerenciamento de recuperação) Propriedades no exemplo

17 • Durabilidade – uma vez completada a transação com sucesso, todas as atualizações realizadas no banco persistirão • responsabilidade do componente gerenciador de recuperação • Isolamento – se uma outra transação ler A e B no momento em que A já foi debitado, mas B ainda não foi creditado, terá um valor inconsistente • Solução: executar transações em série! • No entanto, execução simultânea proporciona melhoria de desempenho significativa – Estratégias para permitir que diversas transações sejam executadas de modo concorrente » Execução simultânea de transações deve resultar em uma situação equivalente ao estado obtido caso as transações tivessem sido executadas uma de cada vez Propriedades no exemplo (2)

18 Estados da transação • 1 transação completada com sucesso – commit • 1 transação não completada com sucesso – Rollback • Estados possíveis: – Ativa ou estado inicial: em execução – Em efetivação parcial: após a execução da última declaração – Em falha: após a descoberta de que a execução normal já não pode se realizar – Abortada: depois que a transação foi desfeita e o banco foi restabelecido ao estado anterior ao início da execução da transação – Em efetivação: após a conclusão com sucesso

19 Ativa Em efetivação parcial Em efetivação Em falhaAbortada Transação efetivada (concluída) Transação abortou Estados da transação (2)

20 Execuções concorrentes • Diversas complicações em relação à consistência de dados • Porém, boas razões para permitir concorrência: – 1 transação -> diversos passos – I/O e CPU podem operar em paralelo • Uma transação faz I/O, outra é processada pela CPU etc. • Processador e disco ficam menos tempo inativos: mais transações por tempo • reduz o tempo médio de resposta: T1 e T2 podem ser executadas concorrentemente

21 Execuções concorrentes (2) • Concorrência x consistência – o sistema de banco de dados deve controlar a interação entre transações concorrentes para impedi-las de destruir sua consistência – Identificar quais ordens de execução (escalas de execução) podem garantir a manutenção da consistência • esquemas de controle de concorrência (próxima aula)

22 Execuções concorrentes (3) • Ex: T1 transfere 50 reais de A para B • Ex: T2 transfere 10% do saldo de A para B:

23 Supondo: Saldo A = 1000 e saldo B = 2000 Suponha que as transações sejam executadas em seqüência, T1 e T2: Ao final da execução: A=855, B=2145 (consistência: A+B é preservado)

24 Poderia ser T2 e depois T1 (escala 2) Ao final da execução: A=850, B=2150 (consistência: A+B é preservado)

25 • Em qualquer caso, a consistência é mantida – saldo de A+B é o mesmo, antes e depois da execução das transações. • Essas são escalas de execução seqüenciais – seqüência de instruções de várias transações em que as instruções que pertencem a uma única transação aparecem agrupadas • Assim, para um conjunto de n transações, há n! escalas seqüenciais válidas.

26 • Quando várias transações são executadas simultaneamente, a escala correspondente já pode não ser seqüencial • Se duas transações são executadas simultaneamente, o SO pode executar uma transação durante algum tempo, depois mudar o contexto e passar a executar a segunda transação durante algum tempo e então voltar à primeira transação durante algum tempo e assim por diante, alternadamente -> várias seqüências de execução são possíveis! • Geralmente não é possível prever exatamente quantas instruções de uma transação serão executadas antes que a CPU alterne para outra transação.

27 Uma escala de execução concorrente possível: Ao final da execução: (consistência: A+B é preservado)

28 Nem todas execuções resultam em um estado correto: Ao final da execução: (consistência: A+B NÃO é preservado: A=950, B=2100)

29 • Se o controle da execução concorrente é deixado completamente sob a responsabilidade do SO, muitas escalas de execução possíveis são factíveis, inclusive aquelas que deixam a base de dados em um estado inconsistente. • É tarefa do sistema de BD garantir que qualquer escala executada deixe o BD num estado consistente: componente de controle de concorrência. • Qualquer escala executada deve ter o mesmo efeito de outra que tivesse sido executada sem concorrência: 1 escala de execução deve ser equivalente a uma escala seqüencial

30 Necessidade do Controle de Concorrência : • Se as transações fosses executadas em série, manteriam o BD consistente. • Com a execução concorrente, as operações das transações se entrelaçam: se ambas atualizaram o • mesmo dado pode haver inconsistência.

31 Atualização Perdida • Lost update: dois writes sobre o mesmo valor inicial, o valor de uma das alterações é perdido

32 Atualização Temporária • Inconsistent retrieval: o valor recuperado deixou de existir

33 Sumário Incorreto • Phantom problem: durante uma operação executada sobre um conjunto de dados, um novo valor é inserido no conjunto e não é computado para a operação • Exemplo : totalização dos saldos

34 Questões • O que define a Consistência da transação de transferência bancária da conta C1 para a conta C2? • E com relação às outras propriedades? • Num sistema de informações, quem assegura a correção dos dados ?

35 Serialização • Para assegurar a consistência: entender quais escalas de execução podem garantir a consistência e quais não irão fazê-lo. • Considere só read e write. – Ex: escala 3 (ver próximo slide)

36 Formas de equivalência entre escalas de execução: conduzem às noções de serialização de conflito

37 Serialização de conflito • Considerar instruções sucessivas de transações diferentes. • Idéia geral: se as instruções referem-se a itens de dados diferentes, então podemos alternar as instruções sem afetar os resultados; se as instruções referem-se ao mesmo item de dados, então a ordem pode importar! • Quatro casos a considerar: • read(q), read(q): seqüência de execução não importa, pois o mesmo valor é lido • read(q), write(q): seqüência de execução importa: lê antes, escreve depois ou escreve antes e lê depois • write(q), read(q): seqüência de execução importa: lê antes, escreve depois ou escreve antes e lê depois • write(q), write(q): importa, pois o valor final gerado depende de quem executar por último ( e isso afeta quem for ler o valor depois)

38 Serialização de conflito • Assim, temos que cuidar dos três últimos casos. • Duas instruções entram em conflito caso elas sejam operações pertencentes a diferentes transações, agindo no mesmo item de dado, e pelo menos uma dessas instruções é uma operação write. • Exemplo mostrado na escala 3: (ver próximo slide)

39 Se duas instruções sucessivas de transações diferentes não entram em conflito, podemos trocar a ordem destas instruções para produzir uma nova escala de execução (equivalente) Logo, no exemplo anterior, vamos trocar o que não é conflitante (em azul):

40 Obtendo:

41 Analisando novamente as instruções não conflitantes, temos (em azul):

42 Trocando novamente o que não é conflitante (em azul), obtemos:

43 Analisando novamente as instruções não conflitantes, temos (em azul):

44 Trocando novamente o que não é conflitante (em azul), temos:

45 Analisando novamente as instruções não conflitantes, temos (em azul):

46 Trocando novamente o que não é conflitante (em azul): Logo, a escala 3 (concorrente) é equivalente a uma escala seqüencial! Produzem o mesmo estado final. Logo, a escala 3 é conflito serializável...

47 • Se uma escala S puder ser transformada em outra S’, por uma série de instruções não conflitantes, dizemos que S e S’ são equivalentes no conflito – Leva ao conceito de serialização de conflito • Uma escala S é conflito serializável se ela é equivalente no conflito a uma escala de execução sequencial – Assim: escala 3 é conflito serializável, já que é equivalente no conflito à escala seqüencial 1

48 Recuperação • Até o momento – Quais escalas são aceitáveis do pto de vista da consistência do banco • Supondo que não ocorram falhas de transação – Mas e se ocorrerem falhas de transação durante a execução concorrente?? » Se uma transação Ti falhar, precisamos desfazer seus efeitos para garantir a propriedade de atomicidade da transação » Em um sistema que permite execução concorrente, também é necessário assegurar que qquer transação Tj que seja dependente de Ti (isto é, Tj leu dados escritos por Ti) tbém seja abortada » Para isso: colocar restrições no tipo de escalas permitidas (quais escalas de execução são aceitáveis)

49 Escalas de execução recuperáveis • Considere: • Suponha que o sistema permita que T9 seja efetivada imediatamente após executar read(A) – T9 é efetivada antes que T8 o seja • Suponha que T8 falhe antes da efetivação – Como T9 leu o valor do item A escrito por T8, temos que abortar T9 • Mas T9 já foi efetivada e não pode ser abortada – Impossível se recuperar corretamente da falha de T8 T8 Read (A) Write (A) Read(B) T9 Read(A)

50 Escalas de execução recuperáveis (2) • Este é um exemplo de escala não recuperável – NÃO deve ser permitida • Maioria dos SGBDs exige que todas as escalas sejam recuperáveis – Uma escala recuperável é aquela na qual, para cada par de transações Ti e Tj, tal que Tj leia itens de dados previamente escritos por Ti, a operação de efetivação de Ti apareça antes da operação de efetivação de Tj

51 Escalas sem cascata • Para o sistema recuperar-se corretamente de uma falha em Ti – Pode ser necessário desfazer várias transações • Ex: se tais transações leram dados escritos por Ti • Ex: T10T11T12 Read(A) Write(A) read(A) write(A) read(A) Se T10 falha após o read(A) de T12 retorno em cascata: Desfazer T11 e T12

52 Escalas sem cascata (2) • Retorno em cascata é indesejável – Desfaz muito trabalho • Conveniente restringir as escalas àquelas nas quais os retornos em cascata não possam acontecer – Chamadas de escalas sem cascatas • Uma escala sem cascata é aquela na qual 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 efetivação de Ti apareça antes da operação de leitura de Tj • Toda escala sem cascata tbém é recuperável

53 Implementação do isolamento • Até agora – Como manter a consistência do banco • Escalas conflito serializáveis e sem cascata • Esquemas de controle de concorrência – Garante que mesmo para várias transações concorrentes, mantenha-se escalas aceitáveis • Exemplo simples: – Bloquear o banco de dados e libera após a efetivação » Um bloqueio por vez ->Escalas seqüenciais! » Proporciona desempenho pobre e baixo grau de concorrência » Veremos como melhorar isso na próxima aula

54 Transações em SQL •Por default, todo comando individual é considerado uma transação –exemplo: DELETE FROM Pacientes •exclui todas ou não exclui nenhuma tupla de pacientes, deve manter o BD consistente, etc •SQL Padrão (SQL-92) – SET TRANSACTION •inicia e configura características de uma transação – COMMIT [WORK] •encerra a transação (solicita efetivação das suas ações) – ROLLBACK [WORK] •solicita que as ações da transação sejam desfeitas Veremos na próxima aula


Carregar ppt "Transações Prof: Galina Resumo baseado no livro do Silberschatz e Elmasri Capítulo 15 e 17 (respectivos): Transações."

Apresentações semelhantes


Anúncios Google