Banco de Dados I - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/... · execute...
-
Upload
hoangquynh -
Category
Documents
-
view
214 -
download
0
Transcript of Banco de Dados I - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/... · execute...
Banco de Dados I
Aula 18 - Prof. Bruno Moreno
22/11/2011
Plano de Aula
• Introdução – SPT
– Sistemas monousuários e multiusuários
– Sistemas multiprogramados
• Transação - Definição
• Concorrência de Transações
• Log do Sistema
• Propriedades ACID
• Históricos (planos)
11:40
Sistemas de Processamento de Transações – SPT
• Grandes bancos de dados
– Muitos usuários executando transações concorrentes
– Exemplos
• Sistemas de reservas de passagens
• Sistemas bancários
• Sistemas de cartões de crédito
• Sistemas de ações
11:40
Alta disponibilidade e baixo tempo de resposta
Sistemas monousuários vs multiusuários
• Um dos critérios de classificação de bancos de dados
• Monousuário
– Somente um usuário pode acessar o sistema em um determinado instante
• Multiusuário
– Muitos usuários podem usá-lo concorrentemente
11:40
Multiprogramação
• Sistemas com uma só CPU: processamento concorrente é simultâneo
– É ilusão o processamento de diversos processos ao mesmo tempo.
– Em sistemas operacionais fala-se em paralelismo (pseudo-paralelismo)
• Sistemas multi-programados realizam pseudo-paralelismo
11:40
A multiprogramação permite que o computador execute diversos programas – ou processos – ao
“mesmo tempo”
Multiprogramação
• A multiprogramação utiliza o conceito de que processos são parados e retomados de acordo com determinadas regras
11:40
Concorrência intercalada Paralelismo real
Transações – Definição
• “é um programa que representa uma unidade lógica de processamento do banco de dados” Navathe – Inserções
– Exclusão
– Alteração
– Recuperação
• Uma transação é estabelecida com delimitadores de início e fim.
11:40
Transações – Operações
• Operações básicas
– Ler_item(X)
• Lê um item X do banco de dados
– Gravar_item(X)
• Grava um item X no banco de dados
11:40
Transações – Operações
• Ler_item(X)
1) Encontrar o endereço do bloco do disco que contém o item X
2) Copiar esse bloco para um buffer na memória principal
3) Copiar o item X do buffer para a variável X do programa
11:40
Transações – Operações
• Gravar_item(X)
1) Encontrar o endereço do bloco de disco que contém o item X;
2) Copiar esse bloco do disco para um buffer na memória principal;
3) Copiar o item X de uma variável de programa chamada X para seu local correto no buffer
4) Armazenar o bloco atualizado no buffer de volta para o disco (atualização de fato)
11:40
Transações - Exemplos
(a) Transferência bancária do valor N da conta de saldo X para a conta de saldo Y
(b) Depósito do valor M para conta de saldo X
11:40
Concorrência de Transações
• Diferentes transações podem ser executadas concorrentemente mesmo se acessando os mesmos itens no banco de dados
11:40
Concorrência de Transações
• Se a execução delas for descontrolada, ocorrerão problemas de inconsistência no banco de dados
11:40
Transações descontroladas
• Transações descontroladas geram três tipos de problemas
(1) Atualização perdida
(2) Atualização temporária (dirty read)
(3) Sumário Incorreto
• Considere um exemplo de sistema de reservas
11:40
Transações descontroladas
Problema 1: Atualização Perdida
– Duas transações acessam os mesmos itens e possuem suas operações intercaladas, tornando os valores destes itens como incorretos.
11:40
T1: Transferência de Reservas X → Poltronas Reservadas no vôo X Y → Poltronas Reservadas no vôo Y N → Reservas transferidas
T2: Reserva de Poltronas em X X → Poltronas Reservadas no vôo X M → Reserva de poltronas
Operações intercaladas geraram um valor incorreto de X para T2
Transações descontroladas
Problema 2: Atualização Temporária
– Uma transação atualiza um item de BD e, a seguir, falha por alguma razão.
11:40 Se a transação T1 falhar deverá retornar ao
seu valor original, senão T2 lê o valor errado.
Transações descontroladas
• Problema 3: Sumário Incorreto
– Uma transação aplica uma função agregada para um número de registros enquanto outra transação está atualizando um destes registros
11:40
T3 lê X já subtraído de N T3 lê Y antes de T1 somar N a Y
Recuperação de Transações
• Um SGBD deve garantir que
(1) Todas as operações na transação foram completadas com sucesso e seu efeito será persistido
(2) A transação que falhou não terá nenhum efeito sobre o banco de dados ou
(3) Transações devem operar isoladamente, sem trazer nenhum efeito sobre outras transações
11:40
DURABILIDADE
ATOMICIDADE
CONSISTÊNCIA
ISOLAMENTO
Tipos de falhas
(1) Computador falhar
– Hardware, software,rede
(2) Erro de transação ou sistema
– Estouro de memória, erro de divisão, parâmetros errados
(3) Erros locais ou condições de exceção detectadas
– Saldo insuficiente em uma operação bancária
11:40
Tipos de falhas
(4) Imposição do controle de concorrência
– O método de controle de concorrência decide abortar uma transação que viola a serialização ou devido a um deadlock, por exemplo
(5) Falha de disco
(6) Problemas físicos e catástrofes
11:40
Estados de Transações
Uma transação é uma unidade atômica de trabalho que ou estará completa ou não foi
realizada
• Para controlar uma transação o sistema de controle precisa saber quando uma transação inicia, quando termina e de suas efetivações e interrupções
– Begin, read, write, end, commit e rollback (abort)
11:40
Estados de Transações
11:40
Log do Sistema
Onde ficam os registros das ocorrências das transações e dos instantes em que iniciaram e
finalizaram?
11:40
Log do Sistema
• Controla operações da transação que afetem valores dos itens do BD
• Registros de log – [start_transaction, T]:
• Transação T começou a ser executada
– [escrever_item, T, X, valor_antigo, novo_valor] • T mudou o valor de X do valor_antigo para o novo_valor
– [ler_item, T, X] • T leu o item X do banco de dados
– [commit, T] • T foi completada com sucesso e seus efeitos podem ser efetivados
– [abort, T] • Indica que a transação T foi interrompida
11:40
Ponto de Efetivação
• Uma transação alcança seu ponto de efetivação quando todas as operações foram registradas no log
• No ponto de efetivação, a transação é efetivada (committed) e seu efeito é registrado no BD
• Quando efetivada, a transação escreve no log uma entrada do tipo [commit, T]
• Uma transação é cancelada quando possui uma entrada [start_transaction, T] no log mas nenhum [commit, T]
11:40
Propriedades das Transações
• Propriedades ACID
Atomicidade: Uma transação é uma unidade atômica.
Consistente: A execução completa de uma transação faz o BD passar de um estado consistente para outro.
Isolamento: Uma transação é executada isoladamente das demais.
Durabilidade: As mudanças realizadas por uma transação no banco de dados são persistidas.
11:40
Propriedades das Transações
• Atomicidade
– Garante que uma transação seja executada por completo
– É de responsabilidade do subsistema de restauração de transações do SGBD garantir essa propriedade
– Se uma transação falhar, o SGBD garante que todos os efeitos serão desfeitos.
11:40
Propriedades das Transações
• Consistência
– É de responsabilidade do programador (especialmente do projetista)
• Restrições de integridade são garantidas pelo SGBD mas devem ser implementadas pelo projetista
– O que é um estado consistente?
– O SGBD garante que qualquer estado do BD é consistente.
11:40
Propriedades das Transações
• Isolamento
– Imposto pelo subsistema de controle de concorrência do SGBD
– Um SGBD deve garantir que uma transação torna suas atualizações invisíveis até que seja efetivada.
11:40
Propriedades das Transações
• Durabilidade
– Responsabilidade do subsistema de restauração do SGBD.
11:40
Propriedade Responsabilidade
Atomicidade Subsistema de Restauração de Transações
Consistência Programador e SGBD
Isolamento Subsistema de Controle de Concorrência
Durabilidade Subsistema de Restauração de Transações
Planos de Execução
• Representa todas as operações das transações
– Para um plano S de n transações T1, T2, ..., Tn, S deve conter as operações na mesma ordem em que elas ocorrem em Ti
– Operações de outras transações Tj poderão ser intercaladas com as operações de Ti em S
– Notação para codificação de um plano
• r, w, c e a para read, write, commit e abort
11:40
Planos de Execução
• Sa: r1(X); r2(X); w1(X); r1(Y); w2(X); w1(Y);
11:40
Planos de Execução
• Sb: r1(X); w1(X); r2(X); w1(X); r1(Y);
11:40
Planos de Execução
• Duas operações em um plano estão em conflito se eles satisfizerem as seguintes condições
(1) Forem de transações diferentes;
(2) Acessarem o mesmo item X;
(3) Pelo menos uma das operações for de escrita.
• Exemplo 1: r1(X); r2(X); w1(X); r1(Y); w2(X); w1(Y);
• Exemplo 2: r1(X); w1(X); r2(X); w1(X); r1(Y);
11:40
Classificação de planos
• Planos podem ser classificados de acordo com a restaurabilidade ou baseado na serialidade
– Um plano S é restaurável se nenhuma transação T de S for efetivada (commit) até que todas as transações T’ que tiverem gravado um item lido por T, tenham sido efetivadas.
Sc: r1(X); w1(X); r2(X); r1(Y); w2(X); c2; a1;
– A transação 2 escreve X depois da transação 1 lê-lo?
11:40
Não-restaurável
Classificação de planos
• Planos podem ser classificados de acordo com a restaurabilidade ou baseado na serialidade
– Um plano S é restaurável se nenhuma transação T de S for efetivada (commit) até que todas as transações T’ que tiverem gravado um item lido por T, tenham sido efetivadas.
Sd: r1(X); w1(X); r1(Y); w2(X); w1(Y); c1; c2;
– A transação 2 escreve X depois da transação 1 lê-lo?
11:40
Restaurável
Classificação de planos baseado na serialidade
• Considere um sistema de reservas onde T1 e T2 ocorrem aproximadamente ao mesmo tempo
11:40
Classificação de planos baseado na serialidade
• Se a intercalação de operações não for permitida temos as duas opções:
11:40
(I) (II)
Classificação de planos baseado na serialidade
• Se a intercalação de operações for permitida, temos diversas opções. Dentre elas:
• Serialidade de planos permite identificar planos corretos quando há intercalação de operações
11:40
(III) (IV)
Classificação de planos baseado na serialidade
• Planos seriais são planos em que as operações de cada transação são executadas consecutivamente, sem intercalação
11:40
(I) (II)
Classificação de planos baseado na serialidade
• Planos não seriais
11:41
(III) (IV)
Classificação de planos baseado na serialidade
• Exemplos
– X = 90, Y = 90, N = 3 e M = 2
11:41
T1 read_item X → 90
X = 90-3= 87 write_item X → 87 read_item Y → 90
Y = 90 + 3 = 93 write_item Y → 93
T2 read_item X → 87
X = 87+2= 89 write_item X → 89
X = 89 e Y = 93
(I)
Classificação de planos baseado na serialidade
• Exemplos
– X = 90, Y = 90, N = 3 e M = 2
11:41
T2 read_item X → 90
X = 90+2= 92 write_item X → 92
T1 read_item X → 92
X = 92-3= 89 write_item X → 89 read_item Y → 90
Y = 90 + 3 = 93 write_item Y → 93
X = 89 e Y = 93
(II)
Classificação de planos baseado na serialidade
• Exemplos
– X = 90, Y = 90, N = 3 e M = 2
11:41
T1 read_item X → 90
X = 90-3= 87
T2 read_item X → 90
X = 90+2= 92
T1 write_item X → 87 read_item Y → 90
T2 write_item X → 92
T1 Y = 90 + 3 = 93
write_item Y → 93
(III)
X = 92 e Y = 93
Atualização Perdida!
Valor Incorreto!
Classificação de planos baseado na serialidade
• Exemplos
– X = 90, Y = 90, N = 3 e M = 2
11:41
T1 read_item X → 90
X = 90-3= 87 write_item X → 87
T2 read_item X → 87
X = 87+2= 89 write_item X → 89
T1 read_item Y → 90
Y = 90 + 3 = 93 write_item Y → 93
(IV)
X = 89 e Y = 93 Plano é não-serial com resultado correto!
A serialidade é um conceito que determina se um plano não-serial é capaz de fornecer um
resultado correto.
11:41
Serialidade tem a ver com equivalência de planos não seriais com planos seriais
Classificação de planos baseado na serialidade
• Um plano é serializável se ele for equivalente a algum plano serial com as mesmas transações
• Dizer que um plano não serial é serializável é equivalente a dizer que é correto
– Deixa o BD em um estado consistente
– A intercalação é apropriada e o resultado é o mesmo se o plano fosse serial
– Porém mais eficiente do que um plano serial
• Concorrência
11:41
Equivalência de planos
• Equivalência quanto a resultado
– Planos equivalentes produzem o mesmo resultado
– Equivalência por resultado não é satisfatória
• S1: r(X); X:=X+10; w(X)
• S2: r(X); X:=X*1,1; w(X)
• Equivalentes com valor de X inicial igual a 100
11:41
Equivalência de planos
• Equivalência de conflito
– Dois planos são conflito equivalentes se a ordem de quaisquer duas operações conflitantes for a mesma em ambos os planos
– Um plano S é conflito serializável se ele for conflito equivalente a um plano serial S’
11:41
Equivalência de planos
• Equivalência de conflito
– O plano (IV) é conflito serializável porque é equivalente ao plano (I)
11:41
(IV) (I)
Equivalência de planos
• Equivalência de conflito
– O plano (III) é equivalente aos plano (I) e (II)?
11:41
(III)
(I) (II)
Projeto: ultima iteração dia 25/11
11:41
Prova dia 02/12
11:41
Freqüência!
22/11/2011
11:41