banco de dados - transações e controle de concorrência
TRANSCRIPT
TRANSAÇÕES E CONTROLE DE
CONCORRÊNCIADanilo GalvãoEmanuel PantojaJuliano PadilhaLuiz VenicioRicardo Arthur
TRANSAÇÃO
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
Banco de dados
SGBD
Software de acesso ao
dados
Software de processament
o das consultas
Aplicativo
Sistema de Banco de Dados
TRANSAÇÃO EM BANCO DE DADOS
TRANSAÇÃO OPERAÇÕES
BANCO DE
DADOS
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.
Exemplo de TransaçãoSuponha 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');
Transações do SGBDNa 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.
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.
FalhasBancos 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.
FalhasComo 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.
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
Estados de uma Transação
CONTROLE DE CONCORRÊNCIA
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.
Controle de Concorrência EscalonadorTem como função assegurar que as transações preservem a consistência quando executadas simultaneamente.
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
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.
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.
Problemas clássicos de concorrência
Atualização Perdida; Leitura Suja;
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
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
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;
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.
Referências
http://www.diegomacedo.com.br/controle-de-concorrencia-em-banco-de-dados/http://www.devmedia.com.br/controle-de-concorrencia-entre-transacoes-em-bancos-de-dados/27756