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