Post on 10-Feb-2018
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);
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
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.
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