Transações Prof: Galina

Slides:



Advertisements
Apresentações semelhantes
Coerência de Cache em Multiprocessadores
Advertisements

Checkpoint SGBD com alta demanda de transações Checkpoint
CONTROLE DE CONCORRÊNCIA
CONTROLE DE CONCORRÊNCIA
Introdução Gdes. bancos de dados: Concorrência: Transação:
Controle de Concorrência Serializabilidade
WebDesign Redes de Computadores Aula 07
Aula 3 Requisitos dos SGBD
01/08/2011 Professor Leomir J. Borba- –
TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula /08/2011 Professor Leomir J. Borba- –
Sistemas de Informação Redes de Computadores
© Marcelo Bezerra de AlcântaraBanco de Dados II – Controle de Concorrência - 1 Disciplina Banco de Dados II Introdução ao Controle de Concorrência Msc,
© Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara.
Recuperação Como garantir a integridade da informação, em caso de avarias de HW ou SW forma de suportar a reposição de um estado consistente da informação.
Bloqueios partilhados
Gestão de transacções noções básicas modelo simples modelo elaborado
Motor de Armazenamento
Transações Atômicas Distribuídas
Cap Recuperação Pretende garantir a atomicidade e durabilidade das transações. Atomicidade => É responsabilidade do gerente de recuperação voltar.
Sumário 1 SQL Embutida 2 Processamento de Consultas
Modelos de Transações para Ambiente de Computação Móvel
Processamento de Transação
Banco de Dados Oracle AESO.
Controle de Concorrência em Sistemas Distribuídos
Fundamentals of Database Processing
Fundamentos de Banco de Dados Prof. Alexander Roberto Valdameri
Threads.
Contratos Modelagem Funcional.
RECUPERAÇÃO APÓS FALHA
Gerenciamento de Transações - Introdução
Controle de Concorrência
Locks.
Problema de Inconsistência em Transações
Um Esquema de Replicação para Suportar Conectividade Fraca em Sistemas de Informação Móveis * Gustavo Fortes Tondello PPGCC – UFSC – 2005 * Original: A.
Transferência de aprendizagem
Banco de Dados II Prof. Antônio Cordeiro.
Controle de Concorrência em Transações Álvaro Vinícius de Souza Coêlho
SGBD - Regra 1 Regra 1: Auto-Contenção- Um SGBD não contém apenas os dados em si, mas armazena completamente toda a descrição dos dados, seus relacionamentos.
Informática Teórica Engenharia da Computação
Aula T06 – BCC202 Análise de Algoritmos (Parte 4) Túlio Toffolo
Prof. Alessandro Gonçalves
SISTEMAS DE GERENCIAMENTO DE BANCO DE DADOS Hélder Lima e Silva - hmls
Conteúdo Processos e threads Partes do processo
Fiabilidade de Sistemas Informáticos Acções Atómicas
Controle Distribuído da Concorrência
Exercícios SGBD - CESPE
Controle de concorrência
Controle de Concorrência Locks. Conceito de Transação Transações podem ser vistas como um grupo de operações combinadas em uma unidade lógica de trabalho.
Transações Concorrentes
Assunto: Transações concorrentes, Disciplina: Banco de dados II, profa. Cristina Paludo Max W. Ourique Ranieri R. Tremea
SCC Bancos de Dados e Suas Aplicações
Introdução a Banco de Dados Aula 04
Bancos de Dados Estrutura e Funcionamento de um SGBD
Falhas.
Protocolo de Bloqueios
Modos de Desconexão para BD’s Móveis Sandberg Marcel Santos Baseado no artigo “Disconnection Modes for Mobile Databases”, de Holliday, Agrawal e El Abbadi.
Fundamentos de linguagens de programação
Controle de Concorrência
Serialização Relaxada em Banco de Dados Múltiplos Andressa Sebben
Sumário 1 Processamento de Consultas 2 Introdução a Transações
Sumário 1 Processamento de Consultas 2 Introdução a Transações
Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções.
UCSal – Bacharelado em Informática
UCSal – Bacharelado em Informática Banco de Dados Profa. Semíramis Assis
Plano de Ensino Conceitos e Características Tipos de Banco de Dados
Banco de Dados Distribuídos Sílvia Cristina de Matos Soares
CONTABILIDADE DE CUSTOS
Questionário (Básico) Autor: Skyup Informática. Atividade - Questionário O módulo permite criar uma série de questões, que deverão ser respondida pelos.
Weyler N M Lopes © Especialização em Banco de Dados Página 1 BANCO DE DADOS AULA - 07.
Universidade de Passo Fundo Tecnologia em Sistemas de Informação TSI109- Fundamentos de Banco de Dados (Restrições de Integridade) Prof. Alexandre Tagliari.
Transcrição da apresentação:

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

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

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.

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.

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

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

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

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.

SGBD sob ótica de Ger. Transações

Operações read e write 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)

Passos para para Read

Write

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.

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.

Propriedades no exemplo 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 (2) 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

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

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

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

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)

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

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)

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

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.

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.

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

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)

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

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.

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

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

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

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 ?

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)

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

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)

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)

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

Obtendo:

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

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

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

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

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

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

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

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)

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)

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

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) Write(A) read(A) write(A) Se T10 falha após o read(A) de T12 retorno em cascata: Desfazer T11 e T12

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

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

Veremos na próxima aula 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