170 likes | 278 Views
Gdes. bancos de dados: múltiplos usuários múltiplas transações Concorrência: multiprocessamento multiprogramação Transação: unidade lógica com uma ou mais operações totalmente executada ou não-executada. Introdução. Lost Update
E N D
Gdes. bancos de dados: múltiplos usuários múltiplas transações Concorrência: multiprocessamento multiprogramação Transação: unidade lógica com uma ou mais operações totalmente executada ou não-executada Introdução
Lost Update Transação A - Transferência de R$50 da conta x para a conta y. Transação B - Retirada de R$20 da conta y. Nec. de Controle de Concorrência Transação ATransação B (1) read(x) (2) x := x - 50 (3) write(x) (4) read(y) (5) read(y) (6) y := y - 20 (7) y := y + 50 (8) write(y) (9) write(y) Suponhamos que o saldo da conta y tivesse R$15 antes das duas operações. Ao final, ao invés do valor esperado de R$45 (15 + 50 -20) ela terá R$ -5!
Dirty Read • Transação A - Transferência de R$50 da conta x para a conta y. • Transação B - Retirada de R$20 da conta x. Transação ATransação B read(x) x := x - 50 write(x) read(x) x := x - 20 write(x) read(y) abort A transação B foi realizada com base num dado escrito por uma transação que falhou. O valor de x não é mais válido (atomicidade de A).
Agregação Incorreta • Cálculo de função de agregação (soma, multiplic...) enquanto itens estão sendo atualizados • Leitura não-repetida: • Duas leituras de um mesmo item com valores diferentes (atualização do valor por outra transação)
Necessidade de Recuperação de Falhas • Falhas no computador • Erros de transação ou do sistema • Condições de exceção: cancelam. de trans. • Imposição do controle de concorrência: “deadlocks” • Falha de disco • Problemas físicos e catástrofes • Obs: Falhas 1 a 4: • Mais comuns • Manutenção de informações para recuperação
Ativa Parcialmente comitted Committed Falhada Terminada Estados da Transação Fim trans. PARC. COMMITTED ATIVA Commit Abortar Abortar COMMITTED Início trans. FALHADA TERMINADA
Log grava operacões das transações: leitura, escrita, confirm. (commit) e aborto Commit Todas as operações executadas com sucesso Efeito de todas as operações registrado no log Grava-se registro de “commit” no log Possibilidade de desfazer ou refazer (se houve commit) com base no log Log e Commit
Propriedades de uma transação: Atomicidade Transações não podem ser executadas parcialmente. Consistência (Preservação da) Supõe-se que cada transação, isoladamente, preserva a consistência da base de dados. Independência Os resultados de uma transação não podem estar visíveis para as demais até que a primeira tenha terminado (Commit). Durabilidade Os resultados escritos por uma transação bem sucedida no BD não podem ser perdidos por falhas. Propriedades Desejáveis de Transações
Ordem de exec. de operações das transações concorrentes Respeita a ordenação relativa das operações de uma transição Operações de interesse: wi(X), ri (X): write e read do item x pela trans. i. ci,ai: commit e abort da trans. i Conflito de op. A e op. B A e B em diferentes trans. acessam mesmo item X Uma das op. é de escrita Escalonamento de Transações
Inclusão de todas as operações de todas as trans. Última op. de cada trans. é commit ou abort Manut. da ordem original entre ops. de uma mesma transação P/ quaisquer ops. conflitantes: ordem definida (obs: escalonamento poderia estabelecer apenas ordem parcial) Escalonamento Completo
Recuperáveis: Transação “committed” nunca é desfeita Espera confirmação (commit) das transações que escreveram valores lidos Recup. complexa, mas possível Exs: r1(X); w1(X); r2(X); r1(Y);w2(X);c2; a1: não recuperável r1(X); w1(X); r2(X); r1(Y);w2(X);c1; c2: recuperável r1(X); w1(X); r2(X); r1(Y);w2(X);a1; a2: recuperável, mas com rollback em cascata Evitam Rollback em Cascata (ERC): Leitura apenas de valores gravados por transações “committed” Ex: r1(X); w1(X); r2(Z); r1(Y); c1; r2(X); w2(X); c2 Caracterizando Escalon. c/ base na Recup.
Escalonamento Estrito Item X não pode ser lido ou gravado até que última transação que alterou X seja committed (ou aborted). Recuperação simples: basta restaurar valor antigo Obs: restauração do valor antigo em esquema ERC mas não estrito leva a erro. Ex: X= 9 inicialmente w1(X,5); w2(X,8); a1;c2; Restabeleceria 9 erradamente após c2 Caracterizando Escalon. c/ base na Recup. (2)
Escalonamentos seriais: transações inteiras em ordem serial (s/ entrelaçamento) correto (indep. da ordem) desperdício de tempo: espera por E/S transações longas bloqueariam acesso ao BD Escalonamento Serializável: equivalente a algum escal. serial Serialização de Escalonamentos
Em resultado: produzem mesmo resultado final pode não ser suficiente equivalência pode depender da entrada Em conflitos ordem de qq. 2 ops. em conflito é a mesma Serializável por conflito: equivalente em conflito a algum escal. serial Ex: r1(X); r2(X); w1(X); w2(X) não é serializável por conflito Equivalência de Escalonamentos
Teste: grafos (dirigidos) de precedência nós são transações transição de T1 p/ T2 se há ops. em conflito nas trans. e op. de T1 ocorre antes ciclos: escalonamento não é serializável Usos admitir como correto o escalonamento serializável permitir entrelaçamentos: ganho de eficiência protocolos para garantir serialização Serialização
EquivalênciaVisões: exigir que valores lidos por uma op. foram escritos pela mesma op. nos dois escal. permite gravação cega seriável em visões: equivalente em visões a esc. serial teste complicado Serialização pode ser muito restritiva. Serialização (II)
Sem begin_transaction SQL2: SET TRANSACTION define características modo de acesso (read only ou read/write) isolamento read uncommitted read committed repeatable read serializable evita leitura suja evita leitura não repetitiva evita “fantasmas”: novas linhas inseridas em tabela não detectadas Suporte na SQL