Anda di halaman 1dari 73

Banco de Dados

II
Thiago Mendes (thiago.mendes@ymail.com)

Transaes
Banco de Dados II

Agenda
Introduo
Estados de uma transao
Execuo Concorrente

Thiago mendes banco de dados ii


- favenorte

Transaes

Thiago mendes banco de dados


ii - favenorte

TRANSAO

O que uma transao


Por exemplo, uma transferncia de dinheiro de uma conta
para outra uma transao consistindo de duas
atualizaes, uma para cada conta.
essencial que todo o conjunto de operaes seja
concludo, ou que, no caso de uma falha, nenhuma delas
ocorra.
Um SGBD precisa:
Garantir que a execuo da transao seja completa;
Administrar a execuo simultnea de vrias
transaes evitando inconsistncias;

Thiago mendes banco de dados ii


- favenorte

Refere-se a uma coleo de operaes que forma uma


nica unidade lgica de trabalho.

Operaes de
Leitura/Escrita
read(x): que transfere o item de dados x do BD para um
buffer local alocado transao que executou a operao
de read. O valor de x colocado dentro de uma varivel
de programa.
write(x): que transfere o item de dados x do buffer local
da transao que executou o write de volta para o BD. O
valor da varivel de programa passado para o item de
dado no BD.
OBS.: para fins de simplificao, o item de dados e a
varivel de programa correspondente sero
representados da mesma forma, x.

Thiago mendes banco de dados ii


- favenorte

As operaes de acesso ao BD que uma transao


pode fazer so:

Thiago mendes banco de dados ii


- favenorte

Exemplo de Transao

Seja T1 uma transao que transfere 50 reais da


conta A para a conta B. Essa transao pode ser
definida como:
T1:

read(A);
A := A - 50;
write(A);
read(B);
B := B + 50;
write(B);

Thiago mendes banco de dados ii


- favenorte

Exemplo

Atomicidade: A execuo de uma transao deve ser


atmica, ou todas as aes so executadas, ou nenhuma
;
Assegurar a atomicidade de uma transao
responsabilidade do SGBD, mais especificamente, do
Componente de Gerenciamento de Transaes e
Recuperador de Falhas.

Consistncia: Cada transao executada isoladamente


(ou seja, sem a execuo concorrente de outra transao)
deve preservar a consistncia do banco de dados;
A exigncia da consistncia aqui significa que a soma de A com B
deve permanecer inalterada aps a execuo da transao.
Responsabilidade do programador

Thiago mendes banco de dados ii


- favenorte

Propriedades das
Transaes

Propriedades das
Transaes
A execuo concorrente de vrias transaes implica no
intercalamento de suas operaes. Se este intercalamento
feito de forma inconveniente, inconsistncias sero
geradas.
No exemplo dado, se uma transao concorrente ler o
valor de A antes dele ser escrito mais depois do
processamento A-50 ter sido feito, ela estar lendo um
valor inconsistente.
Execues em srie resolvem este problema mas a
concorrncia benfica por causa do tempo de execuo
(melhora do desempenho).
Assegurar o isolamento de responsabilidade do
Controlador de Concorrncia.

Thiago mendes banco de dados ii


- favenorte

Isolamento: Cada transao deve ser isolada dos


efeitos da execuo concorrente de outras transaes;

Durabilidade: Toda transao que for finalizada


de forma bem-sucedida deve persistir seus
resultados em banco mesmo na presena de
falhas no sistema.
No exemplo dado, se a transao se completar com
sucesso e o usurio que a disparou for notificado da
transferncia de fundos, isso significa que no houve
nenhuma falha de sistema que tenha resultado em
perda de dados relativa a essa transferncia.
Assegurar a durabilidade responsabilidade do
componente do SGBD chamado de Recuperador de
Falhas.

Thiago mendes banco de dados ii


- favenorte

Propriedades das
Transaes

Uma transao uma unidade de trabalho atmica que


completada em sua totalidade ou nada dela deve ter efeito.
Para tornar isso possvel, as seguintes operaes so
necessrias:
Begin-transaction: Denota o incio da execuo da transao;
End-transaction: Especifica que as operaes da transao
terminaram e marca o limite final da execuo da transao.
Neste ponto necessrio verificar se o COMMIT ou o ABORT so
necessrios, caso j no tenham sido explicitados;
Commit-transaction: Sinal de trmino com sucesso e que as
alteraes podem ser permanentemente gravadas no BD;
Rollback (abort-transaction): Assinala que a transao no
terminou com sucesso e que seus efeitos devem ser desfeitos;
Undo: Desfaz uma operao;
Redo: Refaz uma operao.

Thiago mendes banco de dados ii


- favenorte

Operaes Adicionais

begin transaction
update TABELA1 set CAMPO1 = NOVO VALOR
where CAMPO2 = 35
if $ERROR <> 0
rollback
else
commit
end transaction
Suponha uma tabela que possua 6000 tuplas que satisfaam a condio e
que
na tupla 4666 houve uma falha no sistema. Neste caso, a varivel chamada
$ERROR guardar o cdigo do erro, o comando ROLLBACK ser executado
e as 4666 tuplas j atualizadas sero automaticamente voltadas a seu estado
anterior.
Ao contrrio, se tudo correr bem, o comando COMMIT ser executado e todas
as 6000 tuplas sero atualizadas com xito.

Thiago mendes banco de dados ii


- favenorte

Operao com
operadores

Thiago mendes banco de dados ii


- favenorte

Arquitetura

Log de Transaes
Registro de todas as operaes (alteraes)
realizadas no banco de dados;
Base para o processo de recuperao (Recovery)
Atualizao anterior operao realizada sobre os
dados;
Atualizao fsica (I/O), sem utilizao de buffers.

Thiago mendes banco de dados ii


- favenorte

Caractersticas:

O que faz uma transao


falhar?

Interrupo do SGBD;
Queda do sistema;
Falta de energia;
Deteco de uma situao inesperada ou exceo:
saldo insuficiente.

Uma transao interrompida ao meio pode deixar


o banco de dados em um estado inconsistente.
O banco de dados deve prover recursos para
remoo dos efeitos de transaes incompletas
para garantir a atomicidade.

Thiago mendes banco de dados ii


- favenorte

As falhas em uma transao podem ter como


motivo:

Diagrama de transio de estados


para a execuo da transao.

Com sucesso
ou com falha.

Thiago mendes banco de dados ii


- favenorte

Estados de uma
Transao

Thiago mendes banco de dados ii


- favenorte

Estados de uma
Transao

Ativa, ou estado inicial; a transao permanece


neste estado enquanto estiver executando.
Em efetivao parcial, aps a execuo da
ltima declarao.
Em falha, aps a descoberta de que a execuo
normal j no pode se realizar.
Abortada, depois que a transao foi desfeita e o
banco de dados foi restabelecido ao estado
anterior do incio da execuo da transao.
Em efetivao, aps a concluso com sucesso.

Thiago mendes banco de dados ii


- favenorte

Consideraes

Uma transao entra no estado de falha quando o


sistema determina que ela j no pode prosseguir sua
execuo normal. Essa transao deve ser desfeita e
entra no estado de abortada. Nesse momento o
sistema tem duas opes:
Reiniciar a transao: somente se ela foi abortada
como resultado de algum erro de hardware ou de
software no criado pela lgica interna da transao. Uma
transao reiniciada considerada uma transao nova.
Matar a transao: normalmente, isto feito em
decorrncia de algum erro lgico interno e s pode ser
corrigido refazendo o programa de aplicao. Esse erro
d-se ou porque a entrada de dados no era adequada ou
porque os dados desejados no foram encontrados no
banco de dados.

Thiago mendes banco de dados ii


- favenorte

Consideraes

Alm das falhas causadas por transaes


incorretas, conforme vimos anteriormente, podem
ocorrer outros tipos de falhas, que ocorrem por
fatores no locais. So diferenciados em dois tipos
de falhas:
Falhas de sistema: no danificam fisicamente o
banco de dados, mas afetam todas transaes em
curso no momento.
Falhas da mdia: causam danos ao banco de dados
ou parte dele, e prejudicam as transaes que fazem
acesso a esta parte do banco. Exemplo: queda da
cabea de gravao.

Thiago mendes banco de dados ii


- favenorte

Gerenciamento de
Transaes - Recuperao

Falhas de sistema: Neste caso, o contedo da


memria de processamento perdido, e no se
sabe mais em qual ponto de execuo de
programas e instrues manuais estamos. Por tal
motivo, no possvel ter conhecimento do ponto
em que paramos em cada transao, e devemos
desfazer cada transao, retornando todo o banco
de dados situao anterior.
Para cada operao (instruo INSERT, DELETE,
UPDATE):
As alteraes de dados aceitas (COMMIT) so
guardadas em um buffer.
A operao realizada registrada em um log fsico,
para termos controle das transaes.

Thiago mendes banco de dados ii


- favenorte

Gerenciamento de
Transaes - Recuperao

Obedecendo o intervalo de tempo t, o SGBD:


Grava todas as alteraes do buffer no meio fsico.
Marca um ponto de verificao (checkpoint) no log fsico,
para separar as operaes j confirmadas daquelas em
realizao.
Para compreender como realizada a recuperao de
sistema, vamos supor o seguinte conjunto de transaes,
compostos cada um pelas operaes respectivas de insero
(I1, I2, etc.) e excluso (D1, D2, ...):
Transao 1: I1, I2 e I3
Transao 2: I4, I5 e I6
Transao 3: I7, I8 e D1
Transao 4: I9, I10, I11, I12, I13 e I14
Transao 5: I15, I16 e D2

Thiago mendes banco de dados ii


- favenorte

Gerenciamento de
Transaes - Recuperao

Para facilitar o entendimento, iremos representar


atravs de uma figura a evoluo de cada
transao ao longo do tempo. Vamos definir que:
Em tc, o sistema realiza uma marcao de ponto de
verificao (checkpoint).
Em tf, ocorre uma falha do sistema.

Thiago mendes banco de dados ii


- favenorte

Gerenciamento de
Transaes - Recuperao

Ao reiniciar o sistema, pela figura, verificamos que:


A transao T1 teve todas as suas atualizaes
gravadas no banco de dados em tc. Portanto, como
no houve prejuzo ao sistema fsico, nada
necessrio fazer.
A transao T2 no estava completa em tc, portanto
no foi gravada em meio fsico. Mas encerrou antes
de tf, e portanto, ao reiniciar, o sistema dever
refazer a transao T2.
A transao T3 iniciou aps tc, mas terminou antes
de tf. Deve ser tambm recuperada e gravada no
reincio.
As transaes T4 e T5 no terminaram antes de tc, e
devem ser desfeitas.

Thiago mendes banco de dados ii


- favenorte

Gerenciamento de
Transaes - Recuperao

Para recuperar os dados da forma descrita, utilizaremos o log fsico das transaes. Iremos
encontrar:
T1: I1
T1:I2
T2: I4
T1: I3
T1: COMMIT
T2:I5
T4: I9
Checkpoint
T2: I6
T2: COMMIT
T4: I10
T3: I7
T4: I11
T3: I8
T4: I12
T5: I15
T3: D1
T3: COMMIT
T4: I13
T5: I16

Thiago mendes banco de dados ii


- favenorte

Gerenciamento de
Transaes - Recuperao

No encontraremos no log T4: I14 e T5: D2 pois no foram


executadas (sistema falha antes). Desta forma, no
poderemos completar esta transao posteriormente pois
no teremos os dados necessrios.
Para recuperar o sistema, iremos partir do banco de dados
existente no meio fsico. Com base no log fsico, iremos
percorrer este arquivo do seu incio at o final. Para cada
nova transao, verificaremos:
Se recebeu um COMMIT antes do checkpoint do sistema;
neste caso, pode ser ignorada pois j se encontra no banco.
Em nosso exemplo, seria T1, o qual podemos retirar do log
antes de sua execuo.
Se no encontramos um COMMIT antes do fim do log; neste
caso, tambm removemos do arquivo, pois a transao no se
completou e deve ser ignorada. Em nosso exemplo, T4 e T5.

Thiago mendes banco de dados ii


- favenorte

Gerenciamento de
Transaes - Recuperao

T1:I2
T2: I4
T1: I3
T1: COMMIT
T2:I5
T4: I9
Checkpoint
T2: I6
T2: COMMIT
T4: I10
T3: I7
T4: I11
T3: I8
T4: I12
T5: I15
T3: D1
T3: COMMIT
T4: I13
T5: I16

Desta forma, para recuperar o banco, bastar


aplicar sobre o conjunto de dados existentes
em meio fsico novamente as transaes
T2 e T3, na sequncia indicada acima no
log aps a anlise efetuada, a qual remove
transaes j completadas antes do
checkpoint e aquelas no completadas
antes da falha do sistema.

Thiago mendes banco de dados ii


- favenorte

Gerenciamento de
Transaes - Recuperao

Falhas de mdia: Neste caso, a recuperao


realizada utilizando o recurso de backup do banco.
Faz-se uso da dupla de utilitrios do SGBD
denominada dump/restore. O primeiro copia o
atual contedo do banco de dados fsico para outro
meio fsico (exemplo: fitas), enquanto o segundo
capaz de reconstituir o primeiro quando necessrio.
Para casos de falhas de mdia, restaura-se o
backup e em seguida utiliza-se o log de
transaes para recuperar as transaes correntes
at o ponto da falha, utilizando o mesmo processo
utilizado para as falhas de sistema.

Thiago mendes banco de dados ii


- favenorte

Gerenciamento de
Transaes - Recuperao

1. Sob o ponto de vista do usurio de um banco de dados,


avalie a situao:
No incio do dia, o correntista possui um saldo de
R$2.000,00. Vai, ento, a um caixa automtica e retira
R$100,00. No instante seguinte, imprime um extrato de
conta corrente e v o seguinte demonstrativo:
Saldo anterior: R$2.000,00
Saque do caixa automtico: R$100,00
Saldo atual: R$2.000,00
Aguarda mais 20 minutos e solicita outro extrato:
Saldo anterior: R$2.000,00
Saque do caixa automtico: R$100,00
Saldo atual: R$1.900,00

Thiago mendes banco de dados ii


- favenorte

Exerccios

A. Para o SGBD o banco de dados estava ntegro


entre o 1. e o 2. extrato? E sob o ponto de
viso do analista que criou a transao?
Explique o por qu nos dois casos.
B. Quais propriedades das transaes foram
violadas? Por que?

Thiago mendes banco de dados ii


- favenorte

Exerccios

Respostas
A. Sob o ponto do SGBD, o banco de dados estava
ntegro porque as transaes estavam em
processo de execuo durante a emisso do 1.
e o 2. extrato, e ao fim a transao finalizou
sucesso.
No ponto de vista do analista, o banco de dados
no estava ntegro porque no momento da
emisso do 1. extrato, aps a realizao de
operao de saque, no houve alterao do
saldo bancrio.

Thiago mendes banco de dados ii


- favenorte

Exerccios

Respostas
B. Atomicidade: Violada, porque a transao
ocorreu em duas etapas.
Consistncia: Violada, porque no momento de
emisso do 1 extrato o saldo bancrio no
refletiu a operao de saque realizada
anteriormente. No ponto de vista do usurio,
houve inconsistncia.
Isolamento: Violada, porque o usurio teve
acesso aos dados antes da finalizao da
transao.
Durabilidade: Dados registrados corretamente
no banco de dados.

Thiago mendes banco de dados ii


- favenorte

Exerccios

Exerccios
Thiago mendes banco de dados ii
- favenorte

2. Identifique o que acontece o que deve ser feito


para a situao abaixo.

Exerccios
Dados armazenados no buffer aguardando a
prxima instruo para liberar esses dados da
memria do computador.
Executa o comando COMMIT.
O SGBD copia os dados da memria para o disco
rgido para um arquivo de banco de dados e libera a
memria. Estes dados se tornam dados persistentes.

Thiago mendes banco de dados ii


- favenorte

3. Como implementada a propriedade


Durabilidade (D) de uma transao na prtica?

Falha de transao
Falha de sistema
Read / write
Estados da transao
Commit / rollback
checkpoint

Thiago mendes banco de dados ii


- favenorte

Relembrando

Execuo Concorrente
Sequencialmente: uma transao Ti termina antes
do incio ou comea aps o final de uma transao Tj
Concorrentemente: partes das transaes Ti e Tj
podem ser processadas em paralelo

Thiago mendes banco de dados ii


- favenorte

Transaes podem ser executadas:

Permitir que mltiplas transaes concorram na


atualizao de dados traz diversas complicaes
em relao consistncia desses dados.
Concorrncia entre transaes necessria para
melhorar o desempenho:
Aproveita o tempo que uma transao permanece
bloqueada devido a operaes de leitura e escrita no
disco para processar outras transaes.
Evita que transaes muito longas retardem a
execuo de transaes mais curtas.

Thiago mendes banco de dados ii


- favenorte

Execuo Concorrente

Execuo Concorrente
O processador executa cada transao por um
tempo, alternando entre as transaes
Transaes tm sua execuo retomada
ciclicamente

Execues concorrentes precisam garantir as


propriedades de consistncia e isolamento
A definio de escalas de execuo (schedules)
identifica as operaes que podem ser
efetuadas concorrentemente sem afetar a
consistncia do BD
Controle de concorrncia impede que um dado que
est sendo alterado por uma transao seja usado
por outra transao

Thiago mendes banco de dados ii


- favenorte

Execues concorrentes implicam que:

Execuo Concorrente

A transao T1 transfere 50 dlares da conta A


para a conta B.
A transao T2 transfere 10 por cento do saldo
da conta A para a conta B.

Thiago mendes banco de dados ii


- favenorte

Sejam T1 e T2 duas transaes que transferem


fundos de uma conta para outra.

Thiago mendes banco de dados ii


- favenorte

Execuo Concorrente

Execuo Sequencial
(serial)
Thiago mendes banco de dados ii
- favenorte

Escalas de execuo em sequncia: Observe que


o estado do BD sempre consistente.

Execuo Concorrente
Incorreta

Thiago mendes banco de dados ii


- favenorte

Correta

Exemplo de escala concorrente equivalente


execuo sequencial T1 -> T2

Execuo Concorrente
isolamento -> saldo total no preservado

Thiago mendes banco de dados ii


- favenorte

Exemplo de escala concorrente que no respeita o

Execuo Concorrente
Na escala concorrente anterior, se T1 falha, T2 tem
que ser refeita, pois leu um valor modificado por T1
Nestes casos, a recuperao feita em cascata ->
cancelar transaes que leram valores invlidos
Rollback em cascata pode ser evitado obrigando que
T2 leia o valor escrito por T1 s aps o commit de T1
Se a efetivao de T2 ocorrer antes do commit de T1
ser impossvel fazer o rollback em cascata

Thiago mendes banco de dados ii


- favenorte

A recuperao de estado dificultada quando h


concorrncia entre transaes

Problemas na
Concorrncia
alteraes perdidas;
alterao temporria (ou leitura
resumo incorreto;
leitura no-repetitiva.

Thiago mendes banco de dados ii


- favenorte

Problema de
Problema de
suja);
Problema do
Problema da

Ocorre quando duas transaes que acessam o


mesmo item de BD possuem suas operaes
intercaladas de uma maneira que o valor de
algum item de dado fique incorreto.

O item X tem um valor


incorreto porque sua
atualizao atravs de T1 foi
perdida (sobrescrita)

Thiago mendes banco de dados ii


- favenorte

Problema de Alteraes
Perdidas

Ocorre quando uma transao altera um item de


dados e depois ela falha por alguma razo. O item
de dado acessado por outra transao antes
que o valor original seja estabelecido.
A transao T1 falha e o
sistema deve alterar o
valor do item
X para o seu valor
anterior; porm, T2 j leu
o valor temporrio
"incorreto" do item X.

Thiago mendes banco de dados ii


- favenorte

Problema de Alterao
Temporria

Se uma transao est calculando uma funo


agregada com um conjunto de tuplas e outras
transaes esto alterando algumas destas
tuplas, a funo agregada pode calcular alguns
valores antes deles serem alterados e outros
depois de serem alterados.
O valor do item Y foi considerado
na funo de agregao da
transao T2 e o seu valor foi
alterado depois pela transao T1

Thiago mendes banco de dados ii


- favenorte

Problema de Resumo
Incorreto

Ocorre quando uma transao T l um item duas


vezes e o item alterado por uma outra
transao T' entre as duas leituras de T. Portanto,
T recebe diferentes valores para suas duas
leituras do mesmo item.
Na 2 leitura do item X pela
transao T1, o valor lido
diferente do valor da 1
leitura, devido alterao
feita pela transao T2 no
item X entre as duas
leituras da transao T1

Thiago mendes banco de dados ii


- favenorte

Problema da Leitura norepetitiva

Um escalonamento S de n transaes uma


ordenao das operaes dessas transaes sujeita
restrio de que, para cada transao Ti que participa
de S, as operaes de Ti em S devem aparecer na
mesma ordem em que ocorrem em Ti.
Notao simplificada para escalonamento:

Ri(X): read_item(X) na transao Ti.


Wi(X): write_item(X) na transao Ti.
Ci: commit na transao Ti.
Ai: abort na transao Ti.

Thiago mendes banco de dados ii


- favenorte

Escalonamento

Um escalonamento S denominado serial (sequencial)


se, para todas as transaes T participantes do
escalonamento, todas as operaes de T forem
executadas consecutivamente no escalonamento; caso
contrrio, o escalonamento denominado no-serial.
Um escalonamento serial:
possui somente uma transao ativa de cada vez;
no permite nenhum entrelaamento de transaes;
considerado correto, independente da ordem de
execuo das transaes;
limita a concorrncia;
na prtica, inaceitvel.

Thiago mendes banco de dados ii


- favenorte

Escalonamento

O sistema de banco de dados deve controlar a


execuo concorrente de transaes para assegurar
que o estado do BD permanea consistente.
A consistncia do banco de dados, sob execuo
concorrente, pode ser assegurada por meio da
garantia de que qualquer escala executada tenha o
mesmo efeito de outra que tivesse sido executada sem
qualquer concorrncia.
Isolamento obriga que uma escala concorrente seja
equivalente a uma escala sequencial.

Thiago mendes banco de dados ii


- favenorte

Escalonamento

Escalonamento
Dois escalonamentos so ditos equivalentes se a ordem de
quaisquer duas operaes conflitantes for a mesma nos dois
escalonamentos.

Sa: r1(X); w1(X); r1(Y); w1(Y); c1; r2(X); w2(X); c2;


(serial)
Sb: r1(X); w1(X); r2(X); w2(X); r1(Y); w1(Y); c1; c2;
(serializvel)
Sc: r1(X); r2(X); w1(X); r1(Y); w2(X); w1(Y); c1; c2;
(no serializvel)

Thiago mendes banco de dados ii


- favenorte

Um escalonamento S de n transaes serializvel se for


equivalente a algum escalonamento serial das n transaes.

Formas de equivalncia entre escalas de


execuo podem ser verificadas sob dois
aspectos:
Serializao de conflito;
Serializao de viso.

Thiago mendes banco de dados ii


- favenorte

Serializao

Instrues das transaes Ti e Tj so conflitantes


se ambas acessam um mesmo dado Q e se pelo
menos uma delas modifica o valor de Q.

Se duas instrues no so conflitantes, sua ordem


pode ser trocada na escala.
Se duas instrues referem-se ao mesmo item de
dado Q, ento a ordem dos dois passos pode
importar.

Thiago mendes banco de dados ii


- favenorte

Serializao de Conflito

1. Ii = read(Q) e Ij = read(Q)
A sequncia de execuo de Ii e Ij no importa, j
que o mesmo valor de Q lido por Ti e Tj,
independentemente da ordem destas operaes.
2. I i = read(Q) e Ij = write(Q)
Se Ii vier antes de Ij, ento Ti no l o valor de Q
que escrito por Tj na instruo Ij.
Se Ij vier antes de Ii, ento Ti l o valor de Q que
escrito por Tj.
Assim, a ordem de Ii e Ij importa.

Thiago mendes banco de dados ii


- favenorte

Serializao de Conflito

3. Ii = write(Q) e Ij = read(Q)
A ordem de Ii e Ij importa por razes semelhantes s do
caso anterior.
4. Ii = write(Q) e Ij = write(Q)
Como ambas as instrues so operaes de escrita, a
ordem dessas instrues no afeta Ti ou Tj.
Entretanto, o valor obtido pela prxima instruo read(Q)
em S afetado, j que somente o resultado da ltima das
duas instrues write(Q) preservado no banco de dados.
Se no houver nenhuma outra instruo de write(Q)
depois de Ii e Ij em S, ento a ordem de Ii e Ij afeta
diretamente o valor final de Q no que se refere ao estado
do banco de dados aps a execuo da escala S.

Thiago mendes banco de dados ii


- favenorte

Serializao de Conflito

Diz-se que duas instrues entram em conflito se


elas so operaes pertencentes a transaes
diferentes, agindo no mesmo item de dado, e pelo
menos uma dessas instrues uma operao de
escrita.
A instruo write(A) de T1 entra
em conflito com a instruo
read(A) de T2.
Porm, a instruo write(A) de T2
no est em conflito com a
instruo read(B) de T1.
Escala S

Thiago mendes banco de dados ii


- favenorte

Serializao de Conflito

Serializao de Conflito

Se Ii e Ij so instrues de transaes
diferentes e no entram em conflito, ento
podemos trocar a ordem de Ii e Ij para produzir
uma nova escala de execuo S.
Diz-se que S e S so equivalentes j que todas
as instrues aparecem na mesma ordem em
ambas as escalas de execuo com exceo de Ii
e Ij, cuja ordem no importa.

Thiago mendes banco de dados ii


- favenorte

Seja Ii e Ij instrues consecutivas de uma escala


de execuo S.

Ainda segundo a escala S, a instruo write(A) de


T2 no entra em conflito com a instruo read(B)
de T1. Ento, permitido mudar a ordem dessas
instrues para gerar uma escala de execuo
equivalente.
Em relao a um mesmo estado
inicial do
sistema, ambas as escalas (S e
esta)
produzem o mesmo estado final
no sistema.

Escala S

Thiago mendes banco de dados ii


- favenorte

Serializao de Conflito

Serializao de Conflito
read(B) de T1 por read(A) de T2;
write(B) de T1 por write(A) de T2;
write(B) de T1 1 por read(A) de T2.
... uma escala com execues seriais ser obtida.

Assim mostrou-se que a escala S equivalente, por


conflito, a uma escala sequencial.
Essa equivalncia garante que para um mesmo estado
inicial do sistema, a escala S produzir o mesmo
estado final produzido por essa escala sequencial.

Thiago mendes banco de dados ii


- favenorte

Se as seguintes trocas de instrues no-conflitantes


forem feitas:

Se uma escala de execuo S puder ser


transformada em outra, S, por uma srie de
trocas de instrues no conflitantes, dizemos
que S e S so equivalentes por conflito.
O conceito de equivalncia por conflito leva ao
conceito de serializao por conflito.
Uma escala de execuo S serializvel por
conflito se ela equivalente por conflito a
uma escala de execuo sequencial.

Thiago mendes banco de dados ii


- favenorte

Serializao de Conflito

A escala abaixo no serializvel por conflito


pois no equivalente em conflito nem
escala sequencial <T3,T4> nem <T4,T3>.

Thiago mendes banco de dados ii


- favenorte

Serializao de Conflito

A escala abaixo no serializvel por conflito,


mas produz o mesmo resultado que uma escala
sequencial. Confira.

Thiago mendes banco de dados ii


- favenorte

Serializao de Conflito

Seja S uma escala. Para saber se ela serializvel


em relao s operaes conflitantes necessrio
criar um grafo de precedncia para S.
G = (V,E) em que V um conjunto de vrtices e E
um conjunto de arestas.
O conjunto de vrtices composto por todas as
transaes que participam da escala.

O conjunto de arestas consiste em todas as


arestas
Ti -> Tj para as quais uma das seguintes
condies verdadeira:
Ti executa write(Q) antes de Tj executar read(Q);
Ti executa read(Q) antes de Tj executar write(Q);
Ti executa write(Q) antes de Tj executar write(Q);

Thiago mendes banco de dados ii


- favenorte

Teste de Serializao de
Conflito

Teste de Serializao de
Conflito
Thiago mendes banco de dados ii
- favenorte

A escala serializvel em conflito se no


houver um ciclo com os arcos do grafo

Ciclo no grafo: Se o grafo de precedncia possui


ciclo, ento a escala S no serializvel por
conflito.

Thiago mendes banco de dados ii


- favenorte

Teste de Serializao de
Conflito

Serializao de Viso
Considere duas escalas de execuo S e S, com o
mesmo conjunto de transaes participando de
ambas. As escalas S e S so ditas equivalentes
por viso se as trs condies seguintes forem
satisfeitas:
Se na escala S a transao Ti l o valor inicial de um
dado, o mesmo deve ocorrer na escala S
Se na escala S a transao Ti l o valor de um dado
escrito por Tj, o mesmo deve ocorrer em S
Se na escala S a transao Ti escreve o valor final de
Q, o mesmo deve ocorrer em S

Thiago mendes banco de dados ii


- favenorte

Trata-se de uma forma de equivalncia menos


restritiva que a equivalncia de conflito.

Thiago mendes banco de dados ii


- favenorte

Serializao de Viso

O conceito de equivalncia por viso leva ao


conceito de serializao por viso.
Uma escala serializvel por viso se ela for
equivalente em viso a uma escala de execuo
sequencial.
equivalente em viso escala
sequencial <T1,T2,T3> j que
uma instruo read(Q) l o valor
inicial de Q em ambas as escalas
e T3 executa a escrita final de Q
em ambas as escalas.

Thiago mendes banco de dados ii


- favenorte

Serializao de Viso

Thiago mendes banco de dados ii


- favenorte

Continua....

Sistemas de Banco de Dados. (Cap. 13) Abraham


Silberchatz, Henry F. Korth e S. Sudarshan. 3
Edio. Makron Books, 1999.

Thiago mendes banco de dados ii


- favenorte

Referncias bibliogrficas

Anda mungkin juga menyukai