Você está na página 1de 4

Introduco ao Processamento de Transaes

Processamento de Transaes
Banco de Dados II

Discutiremos: Discutiremos: Mono_usurio Versus Multiusurio Transaes, operaes de leitura e Transaes, gravao,log do sistema Porque o Controle de Concorrncia necessrio Porque a recuperao necessria

Introduco ao Processamento de Transaes


Classificao dos SGBDs quando ao nmero de usurios que podem usar o sistema concorrentemente:
SGBD monousurio: se somente um usurio de cada vez monousurio: puder usar o sistema. Exemplo: sistemas de computao pessoal. SGBD multiusurio: vrios usurios podem acessar o banco multiusurio: de dados concorrentemente. Exemplo: a maioria dos sistemas de banco de dados.

Transaes
Uma transao uma unidade lgica de processamento no banco de dados. Podendo incluir operaes de:
Incluso Excluso Modificao Recuperao

Uma transao deve ser indivisvel no que se refere a sua recuperabilidade. recuperabilidade.

Operaes de Leitura e Escrita de uma Transao


Read (x) - L um item de nome x em varivel de programa que tambm se chama x.
1. 2. 3.

Exemplo
T1 : Transfere R$50,00 da conta X R$50,00 para a conta Y:
read(X); read(X); X:=X - 50; write(X); write(X); read(Y); read(Y); Y:= Y+ 50; write(Y); write(Y);

Acha endereo do bloco que contm x Copia o bloco em buffer na memria principal Copia item x do buffer p/ a varivel de programa chamada x.

Write (x) - Escreve o valor da varivel de programa x no tem chamado x.


1. 2. 3. 4.

Acha endereo do bloco que contm tem x Copia o bloco em buffer na memria principal Copia tem x da varivel de programa x p/ a sua localizao correta no buffer. Armazena bloco atualizado do buffer p/ o disco

Introduco ao Processamento de Transaes


Porque o controle de concorrncia necessrio:
Diversos problemas podem ocorrer quando transaes concorrentes so executadas de maneira descontrolada: Problema de atualizao perdida Problema da atualizao temporria ( Leitura Suja) Problema de agregao ( Soma, resumo) incorreta

Problema de atualizao perdida


Esse problema ocorre quando duas transaes que acessam os mesmos itens do banco de dados tiverem suas operaes intercaladas, de modo que tornem o valor de alguns dos itens de banco de dados incorretos.

T1
read(x); read(x); X:=X -50;

T2
read(x); read(x); X:=X +70;
Item X tem um valor incorreto pois a atualizao feita por T1 foi perdida.

write(x); write(x); ler_item(Y); write(x); write(x); Y:= Y+ 50; write(y); write(y);

Problema da atualizao temporria ( Leitura Suja)


T1
read(x); read(x); X:=X - 50; write(x); write(x);
Supondo um ERRO neste Ponto !!!!!

Problema de agregao ( Soma, resumo) incorreta


T1
read(x); read(x); X:=X -N; write(x); write(x);

T2

T3
SUM:=0;

read(x); read(x); X:=X + 70; read(Y); read(Y); write(x); write(x);

A transao T1 falha e X dever retornar ao seu valor original, portanto T2 leu um valor incorreto de X.

read(x); read(x); SUM:= SUM + X read(Y); read(Y); SUM:= SUM + Y read(y); read(y); Y:= Y+ N; write(Y) write(Y)

T3 l X depois da subtrao de N e l Y antes da adio de N. O resultado uma soma errada (sem N)

ROLLBACK;

Porque a restaurao (recuperao) necessria


Sempre que uma transao submetida, o sistema deve garantir que: 1- Todas as operaes na transao se completam com sucesso e seu efeito registrado permanentemente no banco de dados. ou 2- A transao no ter absolutamente nenhum efeito sobre o banco de dados ou sobre quaisquer outras transaes.

Porque a recuperao necessria


O SGBD no deve permitir que algumas operaes de uma transao T sejam aplicadas enquanto outras no. Tipos de falhas:
1- Falha de computador 2- Erro de transao ou de sistema (ex.: /0) 3- Erros locais ou de condies de exceo detectados pelas transaes (ex.: Saldo insuficiente) 4- Imposio do controle de concorrncia (Deadlock) (Deadlock) 5- Falha de disco 6- Problemas fsicos e catstrofes

Conceitos de Transao e Sistema


Uma transao uma unidade atmica de trabalho que completada integralmente ou no realizada. O gerenciador de recuperao acompanha as seguintes transaes:
BEGIN_TRANSACTION READ ou WRITE END_TRANSACTION COMMIT_TRANSACTION ROLLBACK

Estados de Uma Transao


Ativa: estado inicial da transao. Ativa: Parcialmente committed: efetuando verificaes. committed: Falha: aps descoberto que a execuo normal no Falha: pode prosseguir. Commited: Depois que todas as verificaes esto ok. Commited: ok. Terminada: transao finalizada. Terminada:
read/write

Ativa

end_transaction rollback

Parcialmente Committed rollback

commit

Committed

Falha

Terminada

Conceitos de Transao e Sistema


Log do sistema O sistema mantm um log para acompanhar todas as operaes das transaes que afetem os valores dos itens do banco de dados. Estas informaes podem ser necessrias para possibilitar a recuperao de falhas. O log mantido em disco para que no seja afetado por qualquer tipo de falha.

Log do Sistema
O LOG (registro de ocorrncias do sistema) registra os seguintes tipos de entradas: Id_transao: Identificador da transao, gerado Id_transao: automaticamente pelo sistema. [START_TRANSACTION, T] [WRITE_ITEM, T, X, valor-antigo, valor_novo] valor[LER_ITEM, T, X] ID da [COMMIT, T] transao [ABORT, T]

Os Arquivos de Log do MySQL


O MySQL tem vrios arquivos de log diferentes que podem ajud-lo a descobrir o que est acontecendo ajuddentro do mysqld: mysqld: O log de erros: Problemas encontrados iniciando, erros: executando ou parando o mysqld. mysqld. O log isam: Documenta todas alteraes a tabelas ISAM. isam: Usado somente para depurao do cdigo isam. isam. O log de consultas: Conexes estabelecidas e consultas executadas. O log de atualizaes: Desatulizado: Armazena todas as Desatulizado: instrues que alteram dados. O log binrio: Armazena todas as instrues que alteram qualquer coisa. Usada tambm para replicao. O log para consultas lentas: Armazena todas queries que levaram mais de long_query_time segundos para executar ou que no usaram ndices.

Ponto de Confirmao (Commit) (Commit)


Uma transao T alcana seu ponto de confirmao ( ponto commit) quando todas as suas operaes que commit) acessam o banco de dados tiverem sido executadas com sucesso e o efeito de todas as operaes da transao no banco de dados tiverem sido registradas no log. log. Diz-se que a transao foi confirmada (commited) Diz(commited) quando seus efeitos tiverem sido permanentemente registrados no banco de dados.

Ponto de Confirmao (Commit) (Commit)


Antes que uma transao atinja o ponto de commit, qualquer parte do log que commit, ainda no tenha sido gravada no disco deve ser gravada imediatamente. Isto necessrio pois em caso de falhas somente as entradas de log que tiverem sido registradas em disco podem ser usadas para recuperao

Conceitos de Transao e Sistema


Propriedades desejveis de uma transao
Atomicidade Consistncia Isolamento Durabilidade ou persistncia

Você também pode gostar