3. Relembrando Conceitos
• Banco de Dados
– Coleção de dados relacionados. Ex: Planilha,
Cadastro, Lista de Pedidos, etc.
• Sistema Gerenciador de Banco de Dados
(SGBD)
– Coleção dos programas que permitem os
usuários criar e manipular um banco de
dados;
– Ex: Oracle, MySQL, SQL Server;
• Sistema de Banco do Dados
– União do SGBD + Base de dados
4. Banco de dados
SGBD
Software de
acesso ao dados
Software de
processamento
das consultas
Aplicativo
Sistema de Banco de Dados
6. O que é uma Transação?
• Refere-se a um conjunto ações que acessa ao BD,
formando uma unidade lógica de processamento;
• Inclui uma ou mais operações de acesso ao BD;
• Processa e possivelmente atualiza vários itens de dados;
• Todas as transações devem ser bem-sucedidas, caso
contrário os efeitos da transação devem ser revertidos.
7. Exemplo de Transação
Suponha que se deseje transferir $100.00 da conta da Alice para a conta do
Bob. Simplificando ao extremo, os comandos SQL para esta operação seriam:
UPDATE conta_corrente SET saldo = saldo - 100.00
WHERE nome = 'Alice';
UPDATE filiais SET saldo = saldo - 100.00
WHERE nome = (SELECT nome_filial FROM conta_corrente WHERE nome = 'Alice');
UPDATE conta_corrente SET saldo = saldo + 100.00
WHERE nome = 'Bob';
UPDATE filiais SET saldo = saldo + 100.00
WHERE nome = (SELECT nome_filial FROM conta_corrente WHERE nome = 'Bob');
8. Transações do SGBD
Na execução de uma transação o SGBD deve garantir:
1. Todas as operações na transação completadas com
sucesso e seu efeito será gravado permanentemente
no BD;
2. Uma transação não terá nenhum efeito sobre o BD ou
outras transações caso ela falhe durante a execução.
9. Finalização de uma Transação
• Commit Transaction
• Encerramento da transação com sucesso;
• Torna as atualizações permanentes.
• Rollback Transaction
• Término da transação com erro;
• Retorna o BD à posição anterior à transação.
10. Falhas
Bancos de dados estão sufeitos a diversas causas de
falhas:
• Execução de operação na transação;
• Condições de exceção;
• Queda no fornecimento de energia;
• Falhas de hardware;
• Falhas de sabotagem de operação;
• etc.
11. Falhas
Como evitar:
• Backup;
• Após a falha:
Se o backup deve ser restaurado ou não;
Se será necessário rolar log de transações;
Saber quantas e quais transações serão desfeitas.
12. Propriedades de uma Transação
• ACID
• A: Atomicidade
• Unidade lógica atômica (tudo ou nada)
• C: Consistência (Preservação)
• Ao final de uma transação o banco continua
consistente
• I: Isolamento
• A execução de uma transação não deve sofrer
interferência de outras transações concorrentes
• D: Durabilidade (Persistência)
• Após o ponto de confirmação, as alterações devem
persistir no banco de dado
15. Controle de Concorrência
Método usado para garantir que as transações sejam
executadas de uma forma segura e sigam as regras
ACID (Atomicidade, Consistência, Isolamento e
Durabilidade).
Evitar anomalias
perda da consistência do banco;
acesso a dados inconsistentes;
perda de atualizações;
Os SGBDs (Sistema Gerenciador de Bancos de Dados)
devem ser capazes de assegurar que nenhuma ação de
transação completadas com sucesso seja perdida.
Uma transação é uma unidade que preserva
consistência.
16. Controle de Concorrência
Escalonador
Tem como função assegurar que as transações
preservem a consistência quando executadas
simultaneamente.
17. Controle de Concorrência
Escalonamento
Serialização
• Requisito abstrato que tem como objetivo assegurar
que as transações executem de forma concorrente e
ao final o estado do banco continue consistente.
Escalonamento Serializável:
• Quando seu efeito sobre o estado do banco de
dados é igual ao de algum escalonamento serial.
Escalonamento não-serializável:
• Escalonamento que não assegura o estado
consistente do banco de dados
18. Controle de Concorrência
Bloqueios
Como os SGBDs impõem a serialização?
• A técnica mais comum adotada é a utilização de
bloqueios sobre elementos do banco de dados,
a fim de evitar um comportamento não
serializável.
19. Controle de Concorrência
Bloqueios
Definição:
• Mecanismo que permite a uma transação impedir
que outras acessem ou atualizem registros de
forma a evitar os problemas de concorrência;
XLOCK:
• Bloqueio exclusivo sobre os registros;
• Utilizado para atualizações;
SLOCK:
• Bloqueio compartilhado sobre os registros;
• Utilizado para consultas.
21. Problemas clássicos de concorrência
Atualização perdida
A atualização perdida pode ocorrer quando dois
processos leem os mesmos dados do banco de
dados, e tentam atualizar os dados com base no que
foi lido antes de uma das atualizações terem êxito.
Transação 1 Tempo Transação 2
Read P T1
T2 Read P
Write P T3
T4 Write P
22. Problemas clássicos de concorrência
Leitura Suja
Ocorre quando uma transação atualiza um item do
banco de dados e, por algum motivo, outra
transação lê esse item supostamente atualizado.
Transação 1 Tempo Transação 2
Read P T1
Write P T2
Fail T3 Read P
Return P T4 Write P
23. Problemas clássicos de concorrência
Solução
Um método de controle de concorrência deverá
garantir que em toda execução concorrente das
transações:
1. Cada transação termine;
2. Cada transação é executada sem interferência das
outras, e sem que anomalias de sincronização
ocorram;
24. Conclusão
Para que se tenha acesso concorrente ao banco de dados
e que se mantenha a consistência do mesmo, faz-se
necessário o uso das técnicas de controle de
concorrência.