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

Post on 11-Feb-2017

3.029 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

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.

top related