You are on page 1of 85

Processamento de Transao

Banco de Dados II 3 Srie

Profa. Kssia Marchi

Transaes
Introduo a Transaes Propriedades ACID Controle de Concorrncia e Restaurao Recuperao da Transao COMMIT de duas fases Estado da Transao O LOG Execues Simultneas Shedules (Escalonamento) Seriao Seriao de Conflito Seriao de Viso Testando a seriao Facilidade de recuperao Shedules recuperveis Shedules no em cascata

Profa. Kssia Marchi

Transao
Os SGBDs, em geral, so Multiusurios
processam simultaneamente operaes disparadas por vrios usurios.
Concorrentemente

deseja-se alta disponibilidade e tempo de resposta pequeno execuo intercalada de conjuntos de operaes

Operaes so chamadas transaes


Profa. Kssia Marchi

Transao
O uso concorrente possvel devido ao conceito de Multiprogramao;
C CPU1 B B
D CPU2

t1 nica CPU Concorrncia Intercalada

t2

t3

t4

Tempo

Vrios processadores Processamento Paralelo


Profa. Kssia Marchi

Transao
Uma transao uma unidade da execuo de programa que acessa e possivelmente atualiza vrios itens de dados. Korth (2006)

Profa. Kssia Marchi

Transao
Normalmente a transao iniciada por um programa do usurio escrito em uma DML ou em linguagem de programao de alto nvel.
Begin Transaction .... Operaes ... End Transaction

Profa. Kssia Marchi

Transao
Uma transao precisa ver um banco de dados consistente. Durante a execuo da transao, o banco de dados pode ser temporariamente inconsistente.
Quando a transao completada com sucesso ( confirmada), o banco de dados precisa ser consistente.
Profa. Kssia Marchi

Transao
Aps a confirmao da transao, as mudanas que ele faz no banco de dados persistem. Vrias transaes podem ser executadas em paralelo. Dois problemas principais para resolver:
Falhas de vrios tipos, como falhas de hardware e falhas de sistema Execuo simultnea de mltiplas transaes

Profa. Kssia Marchi

Transaes

Uma amostra de transao (Pseudocdigo)

Profa. Kssia Marchi

Transao
Propriedades ACID
Atomicidade. Ou todas as operaes da transao so refletidas corretamente no banco de dados ou nenhuma delas .

Componente de Gerenciamento de Transaes


Profa. Kssia Marchi

Transao
Propriedades ACID
Consistncia. A execuo de uma transao isolada preserva a consistncia do banco de dados.

Responsabilidade do Programador da Aplicao


Profa. Kssia Marchi

Transao
Propriedades ACID
Isolamento. Embora vrias transaes possam ser executadas simultaneamente, cada transao precisa estar desinformada das outras transaes que esto sendo executadas ao mesmo tempo. Os resultados da transao intermediria precisam estar ocultos das outras transaes sendo executadas simultaneamente.

Profa. Kssia Marchi

Transao
Propriedades ACID
Exemplificando o Isolamento:
para cada par de transaes, Ti e Tj, parece para Ti que Tj, terminou a execuo antes que Ti comeasse ou Tj iniciou a execuo depois que Ti terminou.

Componente de Controle de Concorrncia


Profa. Kssia Marchi

Transao
Propriedades ACID
Durabilidade. Depois que uma transao for completada com sucesso, as mudanas que ela fez ao banco de dados persistem.

Componente de Gerenciamento de Recuperao


Profa. Kssia Marchi

Exemplo de transferncia de fundos


Transao para transferir US$ 50 da conta A para a conta B:
1. 2. 3. 4. 5. 6. read(A) A := A 50 write(A) read(B) B := B + 50 write(B)

Profa. Kssia Marchi

Exemplo de transferncia de fundos (cont.)


Requisito de atomicidade Se a transao falhar aps a etapa 3 e antes da etapa 6, o sistema deve garantir que suas atualizaes no sejam refletidas no banco de dados, ou uma inconsistncia ir resultar.

Requisito de consistncia A soma de A e B inalterada pela execuo da transao.

Profa. Kssia Marchi

Exemplo de transferncia de fundos (cont.)


Requisito de isolamento Se entre as etapas 3 e 6, outra transao receber permisso de acessar o banco de dados parcialmente atualizado, ele ver um banco de dados inconsistente (a soma A + B ser menor do que deveria ser). Isso pode ser trivialmente assegurado executando transaes serialmente.

Profa. Kssia Marchi

Exemplo de transferncia de fundos (cont.)


Requisito de durabilidade Quando o usurio notificado de que a transao est concluda (ou seja, a transao dos US$ 50 ocorreu), as atualizaes no banco de dados pela transao precisam persistir a pesar de falhas.

Profa. Kssia Marchi

Controle de Concorrncia e Restaurao


Ocontrole de concorrncia e os mecanismos de restaurao esto relacionados com os comandos de acesso ao Banco de Dados de uma transao. Transaes simultneas podem acessar e alterar os mesmos itens em um Banco de Dados.
Execuo descontrolada Problema de Inconsistncia
Profa. Kssia Marchi

Por que o Controle de Concorrncia necessrio?


Evitar o problema da atualizao perdida.
T1 Ler_item(X); X:=X-N;
Tempo

T2

Ler_item(X); X:=X+M
Escrever_item(X); Ler_item(Y); Escrever_item(X)

Y:=Y+N Escrever_item(Y)

Profa. Kssia Marchi

Por que o Controle de Concorrncia necessrio?


Evitar o problema da atualizao temporria (ou Dirty Read Leitura de Sujeira).
T1
Tempo Ler_item(X); X:=X-N; Escrever_item(X); Ler_item(X); X:=X+M; Escrever_item(X); Ler_item(Y);

T2

Profa. Kssia Marchi

Por que o Controle de Concorrncia necessrio?


Evitar o problema do Sumrio Incorreto.
T1 T3 Sum:=0; Ler_item(A); Sum:=sum+A;

Tempo

Ler_item(X); X:=X-N; Escrever_item(X);


Ler_item(X); Sum:=sum+X; Ler_item(Y); Sum:=sum+Y; Ler_item(Y); Y:=Y+N; Escrever_item(Y);
Profa. Kssia Marchi

Por que a Restaurao (Recuperao) necessria?


Quando uma transao executada, o sistema deve garantir:
Todas as transaes foram completadas com sucesso, o sistema deve gravar permanentemente os dados no BD; Ou a transao no ter nenhum efeito sobre o BD, quando detectar uma FALHA.

Profa. Kssia Marchi

Por que a Restaurao (Recuperao) necessria?


Tipos de Falhas
O computador falhar (Crash ou queda do sistema); Erro de transao no sistema, exemplo, Overflow; Erros locais ou condies de exceo detectadas pela transao; Imposio do controle de concorrncia; Falha de disco; Problemas fsicos e catstrofes;
Profa. Kssia Marchi

Recuperao de Transaes
Incio da transao
Execuo bem-sucedida de BEGIN TRANSACTION;

Trmino da transao
Execuo bem-sucedida de uma instruo COMMIT ou ROLLBACK

Profa. Kssia Marchi

Recuperao de Transaes
COMMIT
Ponto de Commit ou validao Corresponde ao fim de uma unidade lgica de trabalho; O banco est, ou deveria estar, consistente;

ROLLBACK
Devolve o banco de dados no estado em que ele se encontrava em BEGIN TRANSACTION;
Profa. Kssia Marchi

Recuperao de Transaes
Quando um ponto COMMIT estabelecido:
Todas as atualizaes anteriores ao ponto COMMIT se tornam permanentes. Os posicionamentos do banco de dados so perdidos. (Tambm no ROLLBACK) Todos os bloqueios de tuplas so liberados. (Tambm no ROLLBACK)

Profa. Kssia Marchi

Commit de duas fases


Importante sempre que uma determinada transao pode interagir com vrios gerenciadores de recursos independentes;
Cada gerenciador mantm seu prprio log de recuperao e, Gerencia seu prprio conjunto de recursos recuperveis.

Profa. Kssia Marchi

Commit de duas fases


Exemplo:
Considere uma transao que atualiza dois bancos de dados, um IMS e um DB2. Se a transao for completada com sucesso, todas as atualizaes sero validadas; Se falhar, todas tero que ser retornadas.

Profa. Kssia Marchi

Commit de duas fases


No interessante emitir um COMMIT ou ROLLBAK para cada um dos bancos de dados;
Pode gerar resultados desagradveis se houver falhas no momento da confirmao.

O ideal emitir uma nica confirmao para todo o sistema.


COMMIT ou ROLLBAKC global executada pelo coordenador.
Profa. Kssia Marchi

Commit de duas fases


Componente coordenador
Executa o COMMIT ou ROOLBAK global; Garante que ambos gerenciadores de recursos faam a validao ou retomada das atualizaes em unssono. Essa garantia se mantm mesmo que o sistema falhe durante esse processo.

Profa. Kssia Marchi

Commit de duas fases


Funcionamento do coordenador FASE 1
Instrui os gerenciadores a ficarem prontos para seguir qualquer caminho na transao (participe do processo).
Fora as entradas de log de recursos locais em seu prprio log fsico. Oferece uma resposta de OK ou No OK ao coordenador.

Profa. Kssia Marchi

Commit de duas fases


Funcionamento do coordenador FASE 2
Ao receber a resposta de todos os participantes, o coordenador fora a gravao de entrada em seu prprio log fsico. Com todas as resposta OK, a deciso ser fazer o COMMIT. Caso contrrio ser fazer o ROLLBACK. Informa a deciso a cada participante que deve validar ou retornar a transao de modo local.
Profa. Kssia Marchi

Commit de duas fases


Observaes importantes:
Cada participante deve respeitar a deciso do coordenador na FASE 2 (protocolo); O surgimento de registro de deciso no log fsico do coordenador assinala a transio da fase 1 para a fase 2. Ao ocorrer uma falha durante o processo geral, o coordenador avalia o log, e se encontrar um commit de duas fases, ele continua do ponto em que foi interrompido.
Profa. Kssia Marchi

Commit de duas fases


Nota: vale a pena observar que se o coordenador e os participantes forem executados em mquinas diferentes (sistemas distribudos), ento uma falha por parte do coordenador poder manter algum participante esperando durante um longo tempo pelo deciso do coordenador, e, enquanto estiver esperando quaisquer atualizaes realizadas pela transao desses participantes devero ser mantidas ocultas de outras transaes e provavelmente bloqueadas.
Profa. Kssia Marchi

Estado da Transao
Encerramento com sucesso Reads e writes Finaliza a transao

Inicia a Transao

A transao deve ser desfeita (Em processo de aborto)

A transao deve ser desfeita (Em processo de aborto)


Encerramento sem sucesso

Profa. Kssia Marchi

Estado da Transao
Reads e writes Finaliza a transao

Inicia a Transao

inicial; A transao permanece nesse estado enquanto est executando; enquanto ativa, uma transao executa uma ou mais operaes read e write
A transao deve ser desfeita (Em processo de aborto)

Encerramento O estado com sucesso

A transao deve ser desfeita (Em processo de aborto)


Encerramento sem sucesso

Profa. Kssia Marchi

Estado da Transao
Encerramento com sucesso Reads e writes Finaliza a transao

Inicia a Transao

Depois que a instruo final foi executada (Solicitao de Commit)


A transao deve ser desfeita (Em processo de aborto)

A transao deve ser desfeita (Em processo de aborto)


Encerramento sem sucesso

Profa. Kssia Marchi

Estado da Transao
Encerramento com sucesso Reads e writes Finaliza a transao

Inicia a Transao

transao Aps o trminoAbem deve ser desfeita sucedido (Em processo de aborto)

A transao deve ser desfeita (Em processo de aborto)


Encerramento sem sucesso

Profa. Kssia Marchi

Estado da Transao
Encerramento com sucesso Reads e writes Finaliza a transao

Inicia a Transao

Depois da descoberta de que a execuo A transao deve ser desfeita normal no pode mais (Em processo de prosseguir aborto)

A transao deve ser desfeita (Em processo de aborto)


Encerramento sem sucesso

Profa. Kssia Marchi

Estado da Transao
Encerramento com sucesso

Depois Reads ea transao foi revertida e o que writes banco de dados foi restaurado ao seu estado anterior ao incio da transao. Finaliza a transao Duas opes aps ter sido abortada:
Inicia a Transao

Reiniciar a transao; pode ser feito apenas se no houver qualquerdeve A transao erro ser desfeita lgico interno Excluir a transao
A transao deve ser desfeita (Em processo de aborto)
Encerramento sem sucesso

(Em processo de aborto)

Profa. Kssia Marchi

O Log
O log (dirio do SGBD) permite recuperar falhas que afetam uma transao. Os logs so mantidos para controlar todas as operaes de uma transao que afetem valores dos itens dos bancos de dados. Mantido em disco. Periodicamente copiado para um sistema de armazenamento.
Profa. Kssia Marchi

O Log
Registros de Log
[start-transactio T] Indica o incio da transao T; [escrever_item, T, X, valor_antigo, novo valor] Indica que a transao T mudou o valor do item X no BD; [ler_item, T,X] Indica que a transao T leu o valor X na BD.

Profa. Kssia Marchi

O Log
Registros de Log
[commit, T] Indica que a transao T foi completada com sucesso; [abort, T] Indica que a transao T foi interrompuda;

Profa. Kssia Marchi

O Log
Os protocolos para restaurao que tiverem reverses (ROLLBACK) no exigem que os READS sejam escritos no LOG; Com o registro de LOG, possvel restaurar o BD para o estado consistente, mesmo aps ter ocorrido um colapso, utilizando tcnicas de recuperao.

Profa. Kssia Marchi

Ponto de Efetivao
Ponto de efetivao (commit point) alcanado quando todas as operaes que acessam o BD esto sendo executadas com sucesso e o efeito de todas elas estiverem sendo gravado no log.

Profa. Kssia Marchi

Execues Simultneas
Vrias transaes podem ser executadas simultaneamente no sistema.
necessrio manter a consistncia.
Uma forma de garantir a consistncia garantir que as transaes sejam executadas serialmente.

Profa. Kssia Marchi

Execues Simultneas
As vantagens so:
Melhor utilizao do processador e do disco, levando a um melhor throughput (taxa de transferncia) de transao: uma transao pode estar usando a CPU enquanto outra est lendo ou escrevendo no disco Tempo de mdio de resposta reduzido para transaes: as transaes curtas no precisam esperar atrs das longas

Profa. Kssia Marchi

Execues Simultneas
Preocupao da execuo simultnea:
Manter a consistncia dos dados. Necessidade de controlar a interao entre as transaes simultneas para impedir que destruam a consistncia do BD.

Os mecanismos que controlam as interaes so chamados de esquemas de controle de consistncia.

Profa. Kssia Marchi

Shedules
Seqncias de instrues que especificam a ordem cronolgica em que as instrues das transaes simultneas so executadas

Profa. Kssia Marchi

Shedules
Um schedule para um conjunto de transaes precisa consistir em todas as instrues dessas transaes Precisam preservar a ordem em que as instrues aparecem em cada transao individual
Profa. Kssia Marchi

Shedules
Uma transao que completa com sucesso sua execuo ter uma instruo commit como a ltima instruo (ser omitida se for bvia) Uma transao que no completa com sucesso sua execuo ter instruo abort como a ltima instruo (ser omitida se for bvia)
Profa. Kssia Marchi

Shedule Serial
Cada schedule serial consiste em uma seqncia de instrues de vrias transaes, em que as instrues pertencentes a uma nica transao aparecem juntas nessa schedule. Para um conjunto de N transaes, existem n! diferentes shedules seriais vlidos.

Profa. Kssia Marchi

Shedules
Suponha que T1 transfere US$ 50 de A para B e T2 transfere 10% do saldo de A para B. A seguir est um schedule serial em que T1 seguido de T2.

Profa. Kssia Marchi

Shedules

Shedule Serial 1
Profa. Kssia Marchi

Shedules
Em transaes simultnes, os shedules no precisam ser seriais. No possvel prever quantas instrues de uma transao sero executadas antes que a CPU passe para outra transao. O conjunto de n transaes muito maior n!.

Profa. Kssia Marchi

Shedules

Shedule No Serial

Profa. Kssia Marchi

Shedules
Se deixarmos o controle da execuo concorrente inteiramente para o S.O. pode acontecer que nem todas as execues concorrentes, resultam em um estado correto.

Profa. Kssia Marchi

Shedules

Shedule No Serial No preserva a consistncia


Profa. Kssia Marchi

Shedules
O componente de controle de concorrncia deve garantir a consistncia do BD. Uma forma de garantir a consistncia em execuo simultnea cuidar para que qualquer Shedule executado seja, de certa forma, equivalente a um Shedule Serial.

Profa. Kssia Marchi

Seriao
Suposio bsica Cada transao preserva a consistncia do banco de dados
Portanto, a execuo serial de um conjunto de transaes preserva a consistncia do banco de dados

Profa. Kssia Marchi

Seriao
Um schedule (possivelmente simultneo) serializvel se for equivalente a um schedule serial. Diferentes formas de equivalncia de schedule ensejam as noes de:
1. Seriao de conflito 2. Seriao de view

Profa. Kssia Marchi

Seriao
Ignoramos as operaes exceto read e write, e consideramos que as transaes podem realizar clculos arbitrrios sobre dados em buffers locais entre reads e writes. Nossos schedules simplificados consistem apenas em instrues read e write.

Profa. Kssia Marchi

Seriao de conflito
As instrues li e lj das transaes Ti e Tj respectivamente, esto em conflito se e somente se algum item Q acessado por li e por lj e pelo menos uma destas instrues escreveram Q.
1. 2. 3. 4. li = read(Q), lj = read(Q). li e lj no esto em conflito li = read(Q), lj = write(Q). Esto em conflito li = write(Q), lj = read(Q). Esto em conflito li = write(Q), lj = write(Q). Esto em conflito

Profa. Kssia Marchi

Seriao de Conflito
Se um schedule S puder ser transformado em um schedule S por uma srie de trocas de instrues no conflitantes, dizemos que S e S so equivalentes em conflito. Dizemos que um schedule S serial de conflito se ele for equivalente em conflito a um schedule serial

Profa. Kssia Marchi

Seriao de Conflito
Conflito
Invertendo instrues no conflitantes: 1. Troque a instruo read(B) de T1 pela instruo write(A) de T2 2. Troque a instruo read(B) de T1 pela instruo read(A) de T2. 3. Troque a instruo write(B) de T1 pela instruo write(A) de T2 4. Troque a instruo write(B) de T1 pela instruo read(A) de T2

Profa. Kssia Marchi

Seriao de Conflito
O resultado final dessas trocas um shedule serial, logo, mostramos que o shedule em questo um Shedule Serial. Isso nos permite dizer que Shedule (S) e o Shedule Gerado (S) so equivalentes em conflito. O que nos leva a afirmar que S Serial de Conflito.
Profa. Kssia Marchi

Seriao de Conflito
Exemplo de um schedule que no serial de conflito:

No podemos trocar instrues no schedule acima para obter o schedule serial < T3, T4 >, ou o schedule serial < T4, T3 >.
Profa. Kssia Marchi

Seriao de Conflito
Concluso:
H definies menos rigorosas da equivalncia em shedule do que a equivalncia em conflito. Em geral, essa anlise difcil de implementar e computacionalmente dispendiosa.

Profa. Kssia Marchi

Seriao de Viso
Seriao de viso so menos rigorosas que a equivalente em conflito. Sejam S e S dois schedules com o mesmo conjunto de transaes. S e S so equivalentes em view se as trs condies a seguir forem satisfeitas:
Profa. Kssia Marchi

Seriao de Viso
1. Para cada item de dados Q, se a transao Ti ler o valor inicial de Q no schedule S, ento, Ti precisa, no schedule S, tambm ler o valor inicial de Q.

Profa. Kssia Marchi

Seriao de Viso
2. Para cada item de dados Q, se a transao Ti executar read(Q) no schedule S, e se esse valor pela transao Tj (se houver), ento a transao Ti, no schedule S, tambm precisa ler o valor de Q que foi produzido pela transao Tj.

Profa. Kssia Marchi

Seriao de Viso
3. Para cada item de dados Q, a transao (se houver) que realiza a operao write(Q) final no schedule S precisa realizar a operao write(Q) final no schedule S.

Profa. Kssia Marchi

Seriao de Viso
Como podemos ver, a equivalncia em view tambm baseada unicamente em reads e writes isolados.

Profa. Kssia Marchi

Seriao de Viso
Um schedule S serial de view se ele for equivalente em view a um schedule serial Todo schedule serial de conflito tambm serial de view

Profa. Kssia Marchi

Seriao de Viso
A seguir est um schedule que serial de view mas no serial de conflito

Todo schedule serial de view que no serial de conflito possui escritas cegas (realizam as escritas sem ter realizado a leitura).
Profa. Kssia Marchi

Testando a Seriao
Ao projetar esquemas de controle de concorrncia, temos que mostrar que os shedules gerados so passveis de seriao. Mtodo que determina a seriao de conflito de um Shedule.

Profa. Kssia Marchi

Testando a Seriao
Considere um schedule de um conjunto de transaes T1, T2, ..., Tn Constri-se o Grfico de Precedncia

Profa. Kssia Marchi

Testando a Seriao
Grfico de Precedncia
Um grfico direcionado onde os vrtices so as transaes (nomes) Consiste em um par G=(V,E) V vrtices, E arestas O conjunto de vrtices consiste de todas as transaes participantes do shedule.

Profa. Kssia Marchi

Testando a Seriao
Grfico de Precedncia
O conjunto de arestas consiste de todas as arestas TiTj para as quais uma das tres condies sejam verdadeiras.
1. Ti executa write(Q) antes que Tj execute read(Q) 2. Ti executa read(Q) antes que Tj execute write(Q) 3. Ti executa write(Q) antes que Tj execute write(Q)

Profa. Kssia Marchi

Testando a Seriao
Se uma aresta Ti Tj existir no grfico de precedncia, ento, em qualquer shedule serial S equivalente a S, Ti precisa aparecer antes de Tj.

Profa. Kssia Marchi

Testando a Seriao
Exemplo:
Desenhamos um arco de Ti at Tj se a transao entra em conflito e Ti acessou o item de dados no qual surgiu o conflito anteriormente

Podemos rotular o arco pelo item que foi acessado

Profa. Kssia Marchi

Testando a Seriao

Profa. Kssia Marchi

T1

T2

T3
Shedule A

T4

Grfico de Precedncia Shedule A


Profa. Kssia Marchi

Referncias Bibliogrficas
Silberschatz, Abraham; Korth, Henry F. e Sudarshan, S. Sistema de Banco de Dados. So Paulo: MAKRON Books, 2006. Date, C. J., 1941 Instroduo a sistemas de banco de dados. Rio de Janeiro: CAMPUS, 2000 Elmasri, Ramez; Sistemas de Banco de Dados; Addison Wesley, 2005.
Profa. Kssia Marchi

You might also like