banco de dados - transações e controle de concorrência

25
TRANSAÇÕES E CONTROLE DE CONCORRÊNCIA Danilo Galvão Emanuel Pantoja Juliano Padilha Luiz Venicio Ricardo Arthur

Upload: juliano-padilha

Post on 11-Feb-2017

3.029 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Banco de Dados - Transações e Controle de Concorrência

TRANSAÇÕES E CONTROLE DE

CONCORRÊNCIADanilo GalvãoEmanuel PantojaJuliano PadilhaLuiz VenicioRicardo Arthur

Page 2: Banco de Dados - Transações e Controle de Concorrência

TRANSAÇÃO

Page 3: Banco de Dados - Transações e Controle de Concorrência

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

Page 4: Banco de Dados - Transações e Controle de Concorrência

Banco de dados

SGBD

Software de acesso ao

dados

Software de processament

o das consultas

Aplicativo

Sistema de Banco de Dados

Page 5: Banco de Dados - Transações e Controle de Concorrência

TRANSAÇÃO EM BANCO DE DADOS

TRANSAÇÃO OPERAÇÕES

BANCO DE

DADOS

Page 6: Banco de Dados - Transações e Controle de Concorrência

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.

Page 7: Banco de Dados - Transações e Controle de Concorrência

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');

Page 8: Banco de Dados - Transações e Controle de Concorrência

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.

Page 9: Banco de Dados - Transações e Controle de Concorrência

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.

Page 10: Banco de Dados - Transações e Controle de Concorrência

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.

Page 11: Banco de Dados - Transações e Controle de Concorrência

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.

Page 12: Banco de Dados - Transações e Controle de Concorrência

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

Page 13: Banco de Dados - Transações e Controle de Concorrência

Estados de uma Transação

Page 14: Banco de Dados - Transações e Controle de Concorrência

CONTROLE DE CONCORRÊNCIA

Page 15: Banco de Dados - Transações e 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.

Page 16: Banco de Dados - Transações e Controle de Concorrência

Controle de Concorrência EscalonadorTem como função assegurar que as transações preservem a consistência quando executadas simultaneamente.

Page 17: Banco de Dados - Transações e Controle de Concorrência

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

Page 18: Banco de Dados - Transações e Controle de Concorrência

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.

Page 19: Banco de Dados - Transações e Controle de Concorrência

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.

Page 20: Banco de Dados - Transações e Controle de Concorrência

Problemas clássicos de concorrência

Atualização Perdida; Leitura Suja;

Page 21: Banco de Dados - Transações e Controle de Concorrência

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

Page 22: Banco de Dados - Transações e Controle de Concorrência

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

Page 23: Banco de Dados - Transações e Controle de Concorrência

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;

Page 24: Banco de Dados - Transações e Controle de Concorrência

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.