19-controle de transação

Propaganda
Curso: Ciência da Computação
Disciplina: Banco de Dados
Campus Lages
Controle de Transação
Prof. Edjandir C. Costa
[email protected]
Agenda
●
Introdução ao processamento de transações
●
Conceitos de transação e sistema
●
Propriedades desejáveis das transações
●
Suporte para transação em SQL
●
Aplicação com o banco de dados Postgresql
Introdução ao processamento de transações
●
●
O conceito de transação oferece um
mecanismo para descrever unidades lógicas de
processamento de banco de dados;
Os sistemas de processamento de transação
são sistemas com grandes bancos de dados e
centenas de usuários simultâneos que
executam transações de banco de dados. Ex:
Sistemas bancários, reservas aéreas, compras
online e outros.
Introdução ao processamento de transações
●
●
●
Os sistemas exigem alta disponibilidade e tempo de
resposta rápido;
O conceito de transação é usado para representar uma
unidade lógica de processamento que deve ser
concluída por inteiro para garantir a exatidão.
Nesse contexto o controle de concorrência é essencial,
pois várias transações submetidas ao mesmo tempo
por diversos usuários interferem umas nas outras e
podem produzir um resultado incorreto.
Introdução ao processamento de transações
●
●
Sistemas monousuários versus multiusuários:
nos sistemas monousuário somente um
usuário pode acessar o sistema enquanto nos
sistemas multiusuários vários acessos são
permitidos simultaneamente;
No modelo multiusuário, o conceito de
multiprogramação é utilizado para permitir que
o SO execute vários processos ao mesmo
tempo.
Introdução ao processamento de transações
●
Em arquiteturas com apenas 1 CPU, a execução dos
processos é intercalada, enquanto em arquitetura com
múltiplos processadores é possível realizar
processamento em paralelo. A maior parte da teoria
referente a controle de concorrência é desenvolvida em
relação à concorrência intercalada.
Introdução ao processamento de transações
●
●
Uma transação é um programa em execução que forma
uma unidade lógica de processamento de banco de
dados. Ela inclui uma ou mais operações de acesso ao
banco de dados – estas podem incluir operações de
inserção, exclusão, modificação ou busca.
Um modo de especificar os limites de transação é
determinando pelas explícias begin transaction e end
transaction em um programa de aplicação. Nesse caso,
as operações entre os dois marcadores são consideradas
formando uma transação.
Introdução ao processamento de transações
●
Se as operações de banco de dados em uma transação
não atualizarem os dados, mas apenas recuperarem
dados, a transação é chamada de transação somente de
leitura; caso contrário, ela é conhecida como transação
de leitura-gravação.
Introdução ao processamento de transações
●
Os mecanismos de controle de concorrência e
recuperação tratam principalmente dos comandos de
banco de dados em uma transação. As transações
submetidas pelos diversos usuários podem ser
executadas simultaneamente, acessar e atualizar os
mesmo itens de banco de dados. Se a execução
simultânea não for controlada, ela pode ocasionar
problemas, deixando o bando de dados inconsistente.
Introdução ao processamento de transações
Por que o controle de concorrência é necessário?
●
Problema de atualização perdida: duas transações que
acessam os mesmos itens do banco de dados têm suas
operações intercaladas o que torna o valor de alguns itens
incorretos.
Introdução ao processamento de transações
Por que o controle de concorrência é necessário?
●
Problema da atualização temporária (leitura suja):
ocorre quando uma transação atualiza um item do banco
de dados e depois a transação falha por algum motivo.
Nesse meio-tempo, o item atualizado é lido por outra
transação, antes de ser alterado de volta para seu valor
original.
Introdução ao processamento de transações
Por que o controle de concorrência é necessário?
●
Problema do resumo incorreto: se uma transação está
calculando uma função de resumo de agregação em uma
série de itens de banco de dados, enquanto outras
transações estão atualizando alguns desses itens, a
função de agregação pode calcular alguns valores antes
que eles sejam atualizados e outros depois.
Introdução ao processamento de transações
Por que o controle de concorrência é necessário?
●
Problema da leitura não repetitiva: acontece quando
uma transação lê o mesmo item duas vezes e o item é
alterado por outra transação entre as duas leituras. Logo,
a primeira transação recebe valores diferentes para suas
duas leituras do mesmo item.
Introdução ao processamento de transações
Por que a recuperação é necessária
●
O sistema deve garantir que todas as operações na
transação sejam concluídas com sucesso, e assim
persistindo no banco de dados ou que a transação não
tenha qualquer efeito. No primeiro caso a transação é
considerada confirmada (commited), e no segundo, a
transação é abortada. Se a transação falhar em alguma
de suas operações, mas antes de executar todas elas, as
já executadas precisam ser desfeitas (rollback).
Introdução ao processamento de transações
Tipos de falhas:
1) Falha do computador/sistema: erro de hardware, rede durante a execução de
uma transação;
2) Erro de transação ou do sistema: erro de programação;
3) Erros locais ou condições de exceção: podem ocorrer condições que
necessitam de cancelamento da transação. Saldo insuficiente da conta, por
exemplo;
4) Imposição de controle de concorrência: devido a violação de serialização ou
deadlocks. São reiniciadas automaticamente em outro momento;
5) Falha de disco: erro durante uma operação de leitura ou gravação da
transação;
6) Problemas físicos ou catástrofes: lista sem fim de problemas, desde falha
elétrica a incêndio.
Introdução ao processamento de transações
As falhas dos tipos 1, 2, 3 e 4 são mais comuns do que as
dos tipos 5 e 6. Sempre que ocorrer uma falha dos tipos 1 a
4, o sistema precisa manter informações suficientes para
recuperar-se rapidamente da falha. O conceito de transação
é fundamental para muitas técnicas de controle de
concorrência e recuperação de falhas.
Conceitos de transação e sistema
Estados de transação e operações
Para fins de recuperação, o sistema precisa registrar quando
cada transação começa, termina e confirma ou aborta. Desse
modo o SGBD precisa acompanhar as seguintes operações:
●
●
●
BEGIN_TRANSACTION: marca o início da transação
READ ou WRITE: operações de leitura ou gravação nos
itens do banco de dados que acontecem dentro da
transação
END_TRANSACTION: marca o final da execução da
transação.
Conceitos de transação e sistema
Estados de transação e operações
●
●
COMMIT_TRANSACTION: sinaliza um final bem sucedido
da transação de modo que as mudanças podem ser
confirmadas no banco de dados;
ROLLBACK (ou ABORT): transação finalizada sem
sucesso, as operações precisam ser desfeitas.
Conceitos de transação e sistema
Log do Sistema
●
Para recuperar-se de falhas que afetam as transações, o
sistema mantém um log para registrar todas as operações
de transação que afetam os valores dos itens de banco de
dados. O log é um arquivo sequencial, apenas para
inserção, que é mantido no disco, de modo que não é
afetado por qualquer tipo de falha, exceto por uma pane no
disco.
Conceitos de transação e sistema
Ponto de confirmação de uma transação
●
Uma transação alcança seu ponto de confirmação quando
todas suas operações tiverem sido executadas com
sucesso e o efeito tenha sido registrado no log. Além do
ponto de confirmação, a transação é considerada
confirmada, e s e u e f e i t o d e v e s e r r e g i s t r a d o
permanentemente no banco de dados.
Conceitos de transação e sistema
Propriedades desejáveis das transações
●
●
Atomicidade: u m a t r a n s a ç ã o é u m a u n i d a d e d e
processamento atômica; ela deve ser realizada em sua
totalidade ou não ser realizada de forma alguma;
Consistência: u m a t r a n s a ç ã o d e v e p r e s e r v a r a
consistência. Se ela for completamente executada do início
ao fim, sem interferência de outras transações, deve levar o
banco de dados de um estado ao outro;
Conceitos de transação e sistema
Propriedades desejáveis das transações
●
●
Isolamento: um transação deve parecer como se fosse
executada isoladamente de outras transações, mesmo
quando elas sejam executadas simultaneamente.
Durabilidade: as mudanças aplicadas ao banco de dados
pela transação confirmada precisam persistir no banco de
dados. Essas mudanças não devem ser perdidas por causa
de alguma falha.
ACID
Suporte para transação em SQL
Em SQL não existe uma instrução Begin_Transaction
explícita. O início da transação é feito implicitamente quando
instruções SQL em particular são encontradas. Porém, cada
transação precisa ter um COMMIT ou um ROLLBACK. Cada
transação tem características atribuídas a ela que são
especificadas por uma instrução SET TRANSACTION. As
características são: modo de acesso, tamanho da área de
diagnóstico e o nível de isolamento.
Suporte para transação em SQL
●
●
●
Modo de acesso: READ ONLY ou READWRITE (default);
Tamanho da área de diagnóstico: número de condições
que podem ser mantidas de maneira simultânea na área
de diagnóstico;
Nível de isolamento (ISOLATION LEVEL): READ
UNCOMMITED, READ COMMITED, REPEATABLE READ
ou SERIALIZABLE (nível máximo).
Suporte para transação em SQL
Leitura suja: uma transação pode ler a atualização de outra transação que ainda não foi
confirmada
Leitura não repetitiva: uma transação faz a leitura de uma valor de uma tabela. Se outra
transação atualizar esse valor, uma nova leitura da primeira transação retorna um valor
diferente do original.
Fantasma: uma transação lê linhas de tabela com base em alguma condição especificada
pela cláusula WHERE. Se uma outra transação inserir uma nova linha que também
satisfaça a cláusula WHERE a primeira transação verá uma linha que não existia
inicialmente.
Suporte para transação em SQL
Bibliografia
Para elaborar esta apresentação utilizei a seguinte referência
bibliográfica:
NAVATHE, Shamkant B.; ELMASRI, Ramez. Sistemas de
banco de dados. Tradução de Daniel Vieira. 6. ed. São Paulo:
Pearson Addison-Wesley, 2011. 788 p., il., 28 cm.
Bibliografia. ISBN 9788579360855.
Download