58401280 Banco de Dados II Transacao

4
1 Processamen to de Processamento de Transações Transações Banco de Dados II Banco de Dados II Introducão Introducão ao ao Processamento Processamento de de Transações Transações Discutiremos Discutiremos: Mono_usuário Mono_usuário Versus Versus Multiusuário Multiusuário Transações Transações , operações operações de de leitura leitura e e gravação,log gravação,log do do sistema sistema Porque Porque o o Controle Controle de de Concorrência Concorrência é necessário necessário Porque Porque a a recuperação recuperação é é necessária necessária Introducão Introducão ao ao Processamento Processamento de de Transações Transações Classificação dos SGBD´s quando ao número de Classificação dos SGBD´s quando ao número de usuários que podem usar o sistema usuários que podem usar o sistema concorrentemente: concorrentemente: SGBD SGBD monousuário monousuário : se somente um usuário de cada vez : se somente um usuário de cada vez puder usar o sistema. Exemplo: sistemas de computação puder usar o sistema. Exemplo: sistemas de computação pessoal. pessoal. SGBD SGBD multiusuário multiusuário : vários usuários podem acessar o banco : vários usuários podem acessar o banco de dados concorrentemente. Exemplo: a maioria dos de dados concorrentemente. Exemplo: a maioria dos sistemas de banco de dados. sistemas de banco de dados. Transações Transações Uma Uma transação transação é uma unidade lógica de é uma unidade lógica de processamento no banco de dados. processamento no banco de dados. Podendo incluir operações de: Podendo incluir operações de: Inclusão Inclusão Exclusão Exclusão Modificação Modificação Recuperação Recuperação Uma transação deve ser indivisível no que Uma transação deve ser indivisível no que se refere a sua se refere a sua recuperabilidade recuperabilidade . Operações de Leitura e Escrita de Operações de Leitura e Escrita de uma Transação uma Transação Read Read (x) (x) - - Lê um item de nome x em v ariável de Lê um item de nome x em variável de programa que também se chama x. programa que também se chama x. 1. 1. Acha endereço do bloco que contém x Acha endereço do bloco que contém x 2. 2. Copia o bloco em buffer na memória principal Copia o bloco em buffer na memória principal 3. 3. Copia item x do buffer p/ a variável de programa chamada x. Copia item x do buffer p/ a variável de programa chamada x. Write Write (x) (x) - - Escreve o valor da variável de programa x Escreve o valor da variável de programa x no no ítem ítem chamado x. chamado x. 1. 1. Acha endereço do bloco que contém Acha endereço do bloco que contém ítem ítem x x 2. 2. Copia o bloco em buffer na memória principal Copia o bloco em buffer na memória principal 3. 3. Copia Copia ítem ítem x da variável de programa x p/ a sua localização x da variável de programa x p/ a sua localização correta no buffer. correta no buffer. 4. 4. Armazena bloco atualizado do buffer p/ o disco Armazena bloco atualizado do buffer p/ o disco Exemplo Exemplo T1 T1 : Transfere : Transfere R$50 R$50,00 da conta X ,00 da conta X para a conta Y: para a conta Y: read read (X); (X); X:=X X:=X - - 50; 50; write write (X); (X); read read (Y); (Y); Y:= Y+ 50; Y:= Y+ 50; write write (Y); (Y); 

Transcript of 58401280 Banco de Dados II Transacao

Page 1: 58401280 Banco de Dados II Transacao

7/22/2019 58401280 Banco de Dados II Transacao

http://slidepdf.com/reader/full/58401280-banco-de-dados-ii-transacao 1/4

1

Processamento deProcessamento deTransaçõesTransações

Banco de Dados IIBanco de Dados II

IntroducãoIntroducão aoao ProcessamentoProcessamentodede TransaçõesTransações

DiscutiremosDiscutiremos::

Mono_usuárioMono_usuário VersusVersus MultiusuárioMultiusuário

TransaçõesTransações,, operaçõesoperações dede leituraleitura ee

gravação,loggravação,log dodo sistemasistema

PorquePorque oo ControleControle dede ConcorrênciaConcorrência éénecessárionecessário

PorquePorque aa recuperaçãorecuperação éé necessárianecessária

IntroducãoIntroducão aoao ProcessamentoProcessamento dede

TransaçõesTransações

Classificação dos SGBD´s quando ao número deClassificação dos SGBD´s quando ao número deusuários que podem usar o sistemausuários que podem usar o sistemaconcorrentemente:concorrentemente:

SGBDSGBD monousuáriomonousuário: se somente um usuário de cada vez: se somente um usuário de cada vezpuder usar o sistema. Exemplo: sistemas de computaçãopuder usar o sistema. Exemplo: sistemas de computaçãopessoal.pessoal.

SGBDSGBD multiusuáriomultiusuário: vários usuários podem acessar o banco: vários usuários podem acessar o bancode dados concorrentemente. Exemplo: a maioria dosde dados concorrentemente. Exemplo: a maioria dossistemas de banco de dados.sistemas de banco de dados.

TransaçõesTransações

UmaUma transação transação é uma unidade lógica deé uma unidade lógica deprocessamento no banco de dados.processamento no banco de dados.Podendo incluir operações de:Podendo incluir operações de: InclusãoInclusão

ExclusãoExclusão

ModificaçãoModificação

RecuperaçãoRecuperação

Uma transação deve ser indivisível no queUma transação deve ser indivisível no quese refere a suase refere a sua recuperabilidaderecuperabilidade..

Operações de Leitura e Escrita deOperações de Leitura e Escrita deuma Transaçãouma Transação

ReadRead (x)(x) -- Lê um item de nome x em variável deLê um item de nome x em variável deprograma que também se chama x.programa que também se chama x.1.1. Acha endereço do bloco que contém xAcha endereço do bloco que contém x

2.2. Copia o bloco em buffer na memória principalCopia o bloco em buffer na memória principal

3.3. Copia item x do buffer p/ a variável de programa chamada x.Copia item x do buffer p/ a variável de programa chamada x.

WriteWrite (x)(x) -- Escreve o valor da variável de programa xEscreve o valor da variável de programa xnono ítemítem chamado x.chamado x.

1.1. Acha endereço do bloco que contémAcha endereço do bloco que contém ítemítem xx

2.2. Copia o bloco em buffer na memória principalCopia o bloco em buffer na memória principal

3.3. CopiaCopia ítemítem x da variável de programa x p/ a sua localizaçãox da variável de programa x p/ a sua localizaçãocorreta no buffer.correta no buffer.

4.4. Armazena bloco atualizado do buffer p/ o discoArmazena bloco atualizado do buffer p/ o disco

ExemploExemplo

T1T1 : Transfere: Transfere R$50R$50,00 da conta X,00 da conta X

para a conta Y:para a conta Y:read read (X); (X); 

X:=X X:=X - - 50; 50; 

write write (X); (X); 

read read (Y); (Y); 

Y:= Y+ 50; Y:= Y+ 50; 

write write (Y); (Y); 

Page 2: 58401280 Banco de Dados II Transacao

7/22/2019 58401280 Banco de Dados II Transacao

http://slidepdf.com/reader/full/58401280-banco-de-dados-ii-transacao 2/4

2

IntroducãoIntroducão aoao ProcessamentoProcessamentodede TransaçõesTransações

Porque o controle de concorrência é necessário:Porque o controle de concorrência é necessário:

Diversos problemas podem ocorrer quandoDiversos problemas podem ocorrer quandotransações concorrentes são executadas de maneiratransações concorrentes são executadas de maneiradescontrolada:descontrolada:

Problema de atualização perdida Problema de atualização perdida 

Problema da atualização temporária Problema da atualização temporária ( Leitura( LeituraSuja)Suja)

Problema de agregação ( Soma, resumo) Problema de agregação ( Soma, resumo) incorreta incorreta 

Problema de atualização perdida Problema de atualização perdida 

Esse problema ocorre quando duas transações que acessamEsse problema ocorre quando duas transações que acessamos mesmos itens do banco de dados tiverem suas operaçõesos mesmos itens do banco de dados tiverem suas operaçõesintercaladas, de modo que tornem o valor de alguns dos itensintercaladas, de modo que tornem o valor de alguns dos itensde banco de dados incorretos.de banco de dados incorretos.

T1 T2T1 T2read read (x); (x); 

X:=X X:=X - - 50; 50; 

read read (x); (x); 

X:=X +70; X:=X +70; 

write write (x); (x); 

ler_item(Y); ler_item(Y); 

write write (x); (x); 

Y:= Y+ 50; Y:= Y+ 50; 

write write (y); (y); 

Item X tem um valor

incorreto pois a

atualização feita por

T1 foi perdida.

Problema da atualização temporária Problema da atualização temporária 

( Leitura Suja)( Leitura Suja)

T1 T2T1 T2read read (x); (x); 

X:=X X:=X - - 50; 50; 

write write (x); (x); 

read read (x); (x); 

X:=X + 70; X:=X + 70; 

read read (Y); (Y); write write (x); (x); 

A transação T1 falha

e X deverá retornar

ao seu valor original,

portanto T2 leu um

valor incorreto de X.

Supondo um

ERRO neste

Ponto !!!!!

ROLLBACK;

Problema de agregação ( Soma,Problema de agregação ( Soma,

resumo) incorreta resumo) incorreta 

T1 T3T1 T3SUM:=0; SUM:=0; 

read read (x); (x); 

X:=X X:=X - - N; N; 

write write (x); (x); 

read read (x); (x); 

SUM:= SUM + X SUM:= SUM + X 

read read (Y); (Y); 

SUM:= SUM + Y SUM:= SUM + Y 

read read (y); (y); 

Y:= Y+ N; Y:= Y+ N; 

write write (Y) (Y) 

T3 lê X depois da

subtração de N e lê Y

antes da adição de N.O resultado é uma

soma errada (sem N)

Porque a restauraçãoPorque a restauração(recuperação) é necessária(recuperação) é necessária

Sempre que uma transação é submetida, o sistemaSempre que uma transação é submetida, o sistemadeve garantir que:deve garantir que:

11-- Todas as operações na transação se completam comTodas as operações na transação se completam comsucesso e seu efeito é registrado permanentemente nosucesso e seu efeito é registrado permanentemente nobanco de dados.banco de dados.

ouou

22-- A transação não terá absolutamente nenhum efeitoA transação não terá absolutamente nenhum efeitosobre o banco de dados ou sobre quaisquer outrassobre o banco de dados ou sobre quaisquer outrastransações.transações.

Porque a recuperação éPorque a recuperação énecessárianecessária

O SGBD não deve permitir que algumasO SGBD não deve permitir que algumasoperações de uma transaçãooperações de uma transação T T sejam aplicadassejam aplicadasenquanto outras não.enquanto outras não.

Tipos de falhas: Tipos de falhas:  11-- Falha de computadorFalha de computador

22-- Erro de transação ou de sistema (ex.: /0)Erro de transação ou de sistema (ex.: /0)

33-- Erros locais ou de condições de exceçãoErros locais ou de condições de exceçãodetectados pelas transações (ex.: Saldo insuficiente)detectados pelas transações (ex.: Saldo insuficiente)

44-- Imposição do controle de concorrência (Imposição do controle de concorrência (DeadlockDeadlock))

55-- Falha de discoFalha de disco

66-- Problemas físicos e catástrofesProblemas físicos e catástrofes

Page 3: 58401280 Banco de Dados II Transacao

7/22/2019 58401280 Banco de Dados II Transacao

http://slidepdf.com/reader/full/58401280-banco-de-dados-ii-transacao 3/4

3

Conceitos de Transação eConceitos de Transação eSistemaSistema

Uma transação é uma unidade atômica deUma transação é uma unidade atômica detrabalho que é completada integralmente ou nãotrabalho que é completada integralmente ou nãoé realizada.é realizada.

O gerenciador de recuperação acompanha asO gerenciador de recuperação acompanha asseguintes transações:seguintes transações: BEGIN_TRANSACTION BEGIN_TRANSACTION 

READ READ ouou WRITE WRITE 

END_TRANSACTION END_TRANSACTION 

COMMIT_TRANSACTION COMMIT_TRANSACTION 

ROLLBACK ROLLBACK 

Estados de Uma TransaçãoEstados de Uma Transação AtivaAtiva: estado inicial da transação.: estado inicial da transação.

ParcialmenteParcialmente committedcommitted: efetuando verificações.: efetuando verificações.

FalhaFalha: após descoberto que a execução normal não: após descoberto que a execução normal nãopode prosseguir.pode prosseguir.

CommitedCommited: Depois que todas as verificações estão: Depois que todas as verificações estão okok..

TerminadaTerminada: transação finalizada.: transação finalizada.

 Ativa AtivaParcialmenteParcialmente

CommittedCommitted

Falha

CommittedCommitted

Terminada

read/write

end_transaction commit

rollback rollback

Conceitos de Transação eConceitos de Transação eSistemaSistema

Log Log do sistema do sistema  –  – O sistema mantém umO sistema mantém um log log 

para acompanhar todas as operações daspara acompanhar todas as operações dastransações que afetem os valores dos itens dotransações que afetem os valores dos itens dobanco de dados.banco de dados.

Estas informações podem ser necessárias paraEstas informações podem ser necessárias parapossibilitar a recuperação de falhas.possibilitar a recuperação de falhas.

OO log log é mantido em disco para que não sejaé mantido em disco para que não sejaafetado por qualquer tipo de falha.afetado por qualquer tipo de falha.

LogLog do Sistemado Sistema

O LOG (registro de ocorrências do sistema) registraO LOG (registro de ocorrências do sistema) registraos seguintes tipos de entradas:os seguintes tipos de entradas:

Id_transaçâoId_transaçâo: Identificador da transação, gerado: Identificador da transação, geradoautomaticamente pelo sistema.automaticamente pelo sistema.

[START_TRANSACTION, T][START_TRANSACTION, T]

[WRITE_ITEM, T, X, valor[WRITE_ITEM, T, X, valor--antigo, valor_novo]antigo, valor_novo]

[LER_ITEM, T, X][LER_ITEM, T, X] [COMMIT, T][COMMIT, T]

[ABORT, T][ABORT, T]

ID da

transação

Os Arquivos deOs Arquivos de LogLog dodo MySQLMySQL

OO MySQLMySQL tem vários arquivos detem vários arquivos de loglog diferentes quediferentes quepodem ajudápodem ajudá--lo a descobrir o que está acontecendolo a descobrir o que está acontecendodentro dodentro do mysqldmysqld::

O O log log de erros de erros : Problemas encontrados iniciando,: Problemas encontrados iniciando,executando ou parando oexecutando ou parando o mysqldmysqld..

OO loglog isamisam: Documenta todas alterações a tabelas ISAM.: Documenta todas alterações a tabelas ISAM.Usado somente para depuração do códigoUsado somente para depuração do código isamisam..

OO loglog de consultas: Conexões estabelecidas e consultasde consultas: Conexões estabelecidas e consultasexecutadas.executadas.

OO loglog de atualizações:de atualizações: DesatulizadoDesatulizado: Armazena todas as: Armazena todas asinstruções que alteram dados.instruções que alteram dados.

OO loglog binário: Armazena todas as instruções que alterambinário: Armazena todas as instruções que alteramqualquer coisa. Usada também para replicação.qualquer coisa. Usada também para replicação.

OO loglog para consultas lentas: Armazena todaspara consultas lentas: Armazena todas queriesqueries quequelevaram mais delevaram mais de long_query_timelong_query_time segundos para executarsegundos para executarou que não usaram índices.ou que não usaram índices.

Ponto de Confirmação (Ponto de Confirmação (CommitCommit))

Uma transação T alcança seu ponto de confirmação (Uma transação T alcança seu ponto de confirmação (pontoponto commitcommit) quando todas as suas operações que) quando todas as suas operações queacessam o banco de dados tiverem sido executadasacessam o banco de dados tiverem sido executadascom sucesso e o efeito de todas as operações dacom sucesso e o efeito de todas as operações datransação no banco de dados tiverem sido registradastransação no banco de dados tiverem sido registradasnono loglog..

DizDiz--se que a transação foi confirmada (se que a transação foi confirmada (commitedcommited))quando seus efeitos tiverem sido permanentementequando seus efeitos tiverem sido permanentementeregistrados no banco de dados.registrados no banco de dados.

Page 4: 58401280 Banco de Dados II Transacao

7/22/2019 58401280 Banco de Dados II Transacao

http://slidepdf.com/reader/full/58401280-banco-de-dados-ii-transacao 4/4

4

Ponto de Confirmação (Ponto de Confirmação (CommitCommit))

Antes que uma transação atinja o pontoAntes que uma transação atinja o pontodede commitcommit, qualquer parte do, qualquer parte do loglog quequeainda não tenha sido gravada no discoainda não tenha sido gravada no disco

deve ser gravada imediatamente.deve ser gravada imediatamente.

Isto é necessário pois em caso de falhasIsto é necessário pois em caso de falhassomente as entradas desomente as entradas de loglog que tiveremque tiveremsido registradas em disco podem sersido registradas em disco podem serusadas para recuperaçãousadas para recuperação

Conceitos de Transação eConceitos de Transação eSistemaSistema

Propriedades desejáveis de umaPropriedades desejáveis de umatransaçãotransação

AtomicidadeAtomicidade

ConsistênciaConsistência

IsolamentoIsolamento

Durabilidade ou persistênciaDurabilidade ou persistência