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

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

Embed Size (px)

Citation preview

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

Transações

Prof: GalinaResumo baseado no livro do Silberschatz e Elmasri

Capítulo 15 e 17 (respectivos): Transações

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

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

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

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

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

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.

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

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.

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

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..

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

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

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

Como o SGBD resolve isso tudo!?

• Tio ACID• A – ATOMICIDADE• C – CONSISTENCIA• I – ISOLAMENTO• D - DURABILIDADE

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

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.

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

SGBD sob ótica de Ger. Transações

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

• 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

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

Passos para para Read

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

Write

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

Propriedades no exemplo Transaçã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)

Requisito 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.

Requisito de consistência — A soma de A e B é inalterada pela execução da transação.

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

Propriedades no exemplo Requisito 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.

Requisito 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.

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

• 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

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

• 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)

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

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

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

Ativa

Em efetivação parcial

Em efetivação

Em falha Abortada

Transação efetivada (concluída)

Transação abortou

Estados da transação (2)

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

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

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

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)

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

Execuções concorrentes (3)

• Ex: T1 transfere 50 reais de A para B• Ex: T2 transfere 10% do saldo de A para B:

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

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)

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

Poderia ser T2 e depois T1 (escala 2)

Ao final da execução: A=850, B=2150 (consistência: A+B é preservado)

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

• 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.

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

• 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.

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

Uma escala de execução

concorrente possível:

Ao final da execução: (consistência: A+B é preservado)

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

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)

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

• 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

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

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.

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

Atualização Perdida

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

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

Atualização Temporária

• Inconsistent retrieval: o valor recuperado deixou de existir

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

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

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

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 ?

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

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)

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

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

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

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)

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

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)

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

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):

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

Obtendo:

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

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

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

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

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

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

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

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

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

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

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

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...

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

• 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

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

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)

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

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)

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

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

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

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:T10 T11 T12

Read(A)

Read(A)

Write(A)

read(A)

write(A)

read(A)

Se T10 falha após o read(A) de T12retorno em cascata:

Desfazer T11 e T12

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

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

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

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

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

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