se a transação falhar entre os 3 passos 4 6, os passos 1 3 ficam sem efeito 4 read(b) Consistência

Documentos relacionados
se a transacção falhar entre os passos 4 6, os passos 1 3 ficam sem efeito

Bases de Dados 2013/2014 Transações. Helena Galhardas. Sumário!

Sistemas de Informação e Bases de Dados 2012/2013. Transações. Alberto Sardinha

BD II (SI 587) Transações em Banco de Dados. Prof. Josenildo Silva

Banco de Dados I 6 Transações e Controle de Concorrência

Sumário. Introdução a Transações

Gerenciamento de Transações em Banco de Dados

BDII SQL TRANSAÇÃO Revisão 2

Bases de Dados 2013/2014 Controlo de Concorrência

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP

Administração e Optimização de BDs

Introdução. Processamento de Transações. Introdução. Introdução. Transações. Transações

Sistemas de Bases de Dados 2.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas

Sistemas de Bases de Dados 2.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas

Controle de Transação

Sistemas Distribuídos Transações

Sumário. Controle de Concorrência

Introdução. Processamento de Transações. Introdução. Introdução. Transações. Transações. Transação

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 21. Escola Politécnica da Universidade de São Paulo

Processamento de Transações

Concorrência. Prof. Márcio Bueno. Material do Prof. Paulo Pires

CONCORRÊNCIA. Buscando aumentar os níveis de concorrência redução da espera em detrimento do isolamento, a SQL definiu alguns níveis de isolamento.

Processamento de Transações

Processamento de Transações

Processamento de Transações

de Bases de Dados Exame 2

TRANSAÇÕES E CONTROLE DE CONCORRÊNCIA Em resumo: Transações: clientes podem necessitar que um servidor execute uma sequência de requisições de forma a

Conceitos. Gestão de Transacções. Transacção. Conceitos e Propriedades. Controlo de Concorrência. Recuperação. Transacções no SGBD Oracle

Lista de Exercícios 12 Transações

de Bases de Dados Exame 1

Processamento de Transações II

Controle de Transações. Banco de Dados André Luiz do Vale Soares

erro lógico: a transacção não pode completar devido a condição de erro erro de sistema: o sistema entrou num estado que impede a transacção

Sistemas de Gestão de Bases de Dados e-fólio B. Resolução e Critérios de Correção

revisão Controle de Concorrência com Locks Bancos de Dados I 2015/02

Transações, Controle de Concorrência e o Hibernate. Clodis Boscarioli

GBC043 - Sistemas de Banco de Dados Lab8 : Transações no PostgreSql

Sumário. Recuperação de Falhas

ANÁLISE E PROJETO DE BANCO DE DADOS

Transacções concorrentes exemplo. B := B 50 write(b) read(a) A := A + 50 write(a)

Banco de Dados I. Aula 18 - Prof. Bruno Moreno 22/11/2011

Processamento de Transações. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

e c d o o r B s s n i : l e F s

de Bases de Dados Exame 1

PROCESSAMENTO DE TRANSAÇÕES

Processamento de Transações. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Orientações. Transações - PostgreSQL. Relembrando: Propriedades desejáveis. Abrir Prompt de comando ROLLBACK

Padrões de Concorrência Offline

Bases de Dados. Exame de 1 a Época. Identifique todas as folhas. Exame sem consulta. Duração: 2h30.

Resolução e Critérios de Correção U.C Sistemas de Gestão de Bases de Dados. 13 de julho de 2015 INSTRUÇÕES

Controle de transações em SQL

U.C Sistemas de Gestão de Bases de Dados Resolução e Critérios de Correção INSTRUÇÕES

Bases de Dados. Parte VI SQL em Ambiente de Programação

BD II (SI 587) Controle de Concorrência. Josenildo Silva.

Administração e Optimização de BDs

Bases de Dados. Apresentação da disciplina. Programa

UNIVERSIDADE FEDERAL DO MARANHÃO - UFMA. Banco de Dados II. Recuperação. Carlos Eduardo Portela Serra de Castro

BANCO DE DADOS 2 TRANSAÇÃO

Oracle Comandos para Processamento de Transações

Criando Transações. Prof. Fernanda Baião. TbEstoqueLivros. TbEstoqueLivros. ID IDLoja IDLivro Estoque

CONCORRÊNCIA. 1. Introdução. Recursos exclusivos. Não necessita controle. Abundância de recursos compartilhados. Controle necessário mas mínimo

Aula 03. Evandro Deliberal

BD II (SI 587) Técnicas de Recuperação. Josenildo Silva.

Sistemas Distribuídos Aula 20

Bases de Dados 2008/2009

Sistemas de Gerência de Bancos de Dados

Bases de Dados 2006/2007 Exame

Processamento de INDUSTRIA 4.0. Big Data. Aula #8 - Transações e concorrência MARMELADA NO RING, FONTE: ESTADAO EDUARDO CUNHA DE ALMEIDA

Roteiro. Noções de Controle de Concorrência. BCC321 - Banco de Dados I. Ementa. Finalidade do Controle de Concorrência.

23/05/12. Conteúdo. Introdução ao gerenciamento de transações. Motivação. Motivação. Motivação. Motivação

Resolução e Critérios de Correção U.C Sistemas de Gestão de Bases de Dados. 18 de julho de 2012

Resolução e Critérios de Correção U.C Sistemas de Gestão de Bases de Dados. 13 de fevereiro de 2014 INSTRUÇÕES

Técnicas de Recuperação em Banco de Dados

Bases de Dados. Parte VI SQL em Ambiente de Programação e Transações. Bases de Dados 2015/2016. Ricardo Rocha / Fernando Silva DCC-FCUP

Gerência de Transações Distribuídas

Banco de Dados. Controle de Concorrência e Recuperação de Transação. Prof. João Eduardo Ferreira Prof. Osvaldo Kotaro Takai

Avisos. Processamento de Transações Controle de Concorrência. Roteiro da aula. Tipos de bloqueio: Binários. Protocolos baseados em bloqueio

Módulo II: Controle de. Concorrência. (Aulas 1 e 7) Clodis Boscarioli

INSTITUTO SUPERIOR TÉCNICO Administração e Optimização de Bases de Dados

Bases de Dados 2013/2014 Gestão de Recuperação. Helena Galhardas. Sumário

SISTEMAS DISTRIBUÍDOS E TOLERÂNCIA A FALHAS MESTRADO DE ENGENHARIA INFORMÁTICA 2013/2014 DOCENTE: PROF. DRª. PAULA PRATA

GBC053 Gerenciamento de Banco de Dados. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM/BCC

Checkpoint. Checkpoint

Transacções Atómicas Distribuídas

BCD29008 Banco de dados

Banco de Dados II. Transações (Oracle) Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

Banco de Dados II. Transações. Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

Transcrição:

Bases de Dados Transacções Propriedades ACID 1 T Atomicidade i : read(a) 2 A := A 50 se a transação falhar entre os 3 write(a) passos 4 6, os passos 1 3 ficam sem efeito 4 read(b) Consistência 5 B := B + 50 a soma A+B tem que ser igual 6 write(b) antes e depois Isolamento nenhuma outra operação deve ler os valores de A ou B entre os passos 3 e 6 Durabilidade assim que o passo 6 termina, todos os resultados são permanentes 2 1

Transacções e concorrência A forma mais fácil de garantir que 2 transacções não interferem seria executá-las em série mas assim o sistema opera à velocidade do componente mais lento (disco) faz com que pequenas transacções tenham que esperar pela conclusão de transacções mais demoradas 3 Transacções e concorrência Os SGBDs permitem que múltiplas transacções sejam executas concorrentemente Necessidade de escalonar transacções concorrentes Escalonamento ordem cronológica pela qual as instruções de várias transacções são executadas preservar a ordem das instruções de cada transacção 4 2

Escalonamento exemplos 1 e 2 T 1 transfere 50 de A para B T 2 transfere 10% de A para B estes são escalonamentos em série: 1 2 5 Escalonamento exemplos 1 e 3 O escalonamento 3 não é em série, mas é equivalente em ambos, a soma A+B é preservada 1 3 6 3

Escalonamento exemplos 3 e 4 O escalonamento 4 não preserva A+B 3 4 7 Ordem das instruções Num escalonamento onde há 2 instruções I 1 e I 2 (de 2 transacções T 1 e T 2 ) que acedem ao mesmo objecto Q I 1 = read(q), I 2 = read(q) a ordem de I 1 e I 2 é indiferente I 1 = read(q), I 2 = write(q) a ordem é importante 1 I = write(q), 2 I = read(q) a ordem é importante 1 I = write(q), 2 I = write(q) a ordem não afecta nem T 1 nem T 2 mas afecta a próxima instrução de read(q) 8 4

Instruções de leitura e escrita 3 9 Serialização por conflitos Diz-se que existe um conflito se 1 I e 2 I tiverem de ser feitas numa certa ordem se não houver conflito, 1 I e 2 I podem ser trocadas 10 5

Objectivo da serialização Se cada transacção preserva a consistência da BD então o escalonamento em série também preserva logo, se for possível demonstrar que um escalonamento concorrente é serializável então esse escalonamento concorrente também preserva a consistência da BD 11 Teste de serialização Forma simples de determinar se um escalonamento é serializável construir um grafo de precedências os nós são transacções (T 1, T 2,..., T n ) os arcos são conflitos (T i T k ) desenha-se um arco de T i para T k se T i executa write(q) antes de T k executar read(q) T i executa read(q) antes de T k executar write(q) T i executa write(q) antes de T k executar write(q) 12 6

Teste de serialização exemplos 1 e 3 1 2 13 Teste de serialização exemplo 4 O escalonamento 4 não é serializável 4 14 7

Teste de serialização outros exemplos Um escalonamento é serializável se o seu grafo de precedências não tiver ciclos os algoritmos de detecção de ciclos têm complexidade temporal O(n 2 ) ou O(n+a) onde a é o número de arcos Se o grafo for acíclico, a série pode ser obtida por ordenação topológica qualquer ordem linear que respeite a ordem parcial do grafo 15 Problemas na serialização por conflitos Segundo os critérios, este escalonamento não é serializável mas sabemos que é válido (mantém A+B) exigiria análise das operações para além de read e write... 16 8

Recuperação em escalonamentos Uma transacção que complete com sucesso tem uma instrução de commit como última instrução commit commit Uma transacção que falhe tem uma instrução de abort como última instrução ao que se segue o rollback da transacção 17 Recuperação em escalonamentos abort commit Quando T 8 falha, T 9 já completou e não pode ser cancelada este escalonamento não é recuperável 18 9

Escalonamentos recuperáveis Considerar apenas escalonamentos recuperáveis estes escalonamentos devem obedecer à seguinte condição: Para qualquer par de transacções T i e T k se T i executa write(q) antes de T k executar read(q) então T i faz commit antes de T k fazer commit commit commit 19 Rollback encadeado Erro numa transacção pode levar ao rollback de várias transacções abort commit Comportamento indesejado pode obrigar a desfazer várias tarefas já realizadas 20 10

Rollback encadeado Considerar apenas escalonamentos sem hipótese de rollback encadeado estes escalonamentos devem obedecer à seguinte condição: Para qualquer par de transacções T i e T k se T i executa write(q) antes de T k executar read(q) então T i faz commit antes de T k fazer read Esta condição garante que o escalonamento é também recuperável 21 Controlo de concorrência Os escalonamentos admissíveis devem ser serializáveis, recuperáveis e preferencialmente sem rollbacks encadeados um sistema em que só corre 1 transacção de cada vez garante isto, mas elimina a concorrência são necessários mecanismos que permitam a concorrência, mas garantam as condições desejadas 22 11

Níveis de isolamento menos exigentes Algumas operações não exigem 100% de consistência p.ex. uma consulta que determina de forma aproximada o saldo médio de todas as contas p.ex. o cálculo de dados estatísticos para optimização de operações Estas transacções não precisam de ser serializadas com outras poupam-se as verificações e deixa-se a transacção correr em livremente em paralelo solução de compromisso entre exactidão dos resultados e desempenho do sistema 23 Níveis de isolamento em SQL Nível de isolamento Dirty reads Non-repeatable reads Phantom reads SERIALIZABLE não não não REPEATABLE READ não não possível READ COMMITTED não possível possível READ UNCOMMITTED possível possível possível Dirty read: é possível ler dados que ainda não foram committed Non-repeatable read: ao ler duas vezes o mesmo registo dentro da mesma transacção, obtém-se valores diferentes Phantom read: ao fazer duas vezes a mesma query dentro da mesma transacção, o número de registos é diferente 24 12

Definição de transacções em SQL As linguagens de manipulação de dados têm de ter elementos para dizer que acções fazem parte de uma transacção Em SQL, qualquer operação inicia implicitamente uma transacção que só termina com commit torna os resultados permanentes rollback cancela a transacção actual 25 Exemplo com Postgres Executar uma transacção start transaction; commit; ou rollback; Vários sistemas usam autocommit por omissão se start transaction for omitido cada operação é uma transacção commit automático no fim da operação 26 13

Exemplo com Postgres Verificar saldos: select balance from account where account_number = 'A-101'; select balance from account where account_number number = 'A-102'; Transferir 350 da conta A-101 para a conta A-102: start transaction; update account set balance = balance 350 where account_number = 'A-101'; update account set balance = balance + 350 where account_number = 'A-102'; commit; 27 14