controle de concorrÊncia lílian simão oliveira. o que é uma transação? É qualquer ação que...

31
CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira

Upload: internet

Post on 21-Apr-2015

110 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

CONTROLE DE CONCORRÊNCIA

Lílian Simão Oliveira

Page 2: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

O que é uma transação?

É qualquer ação que lê ou grava em um banco de dados

Um banco de dados em estado consistente é aquele em que são satisfeitas as restrições de integridade de todos os dados.

Page 3: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Propriedades de uma transação:

Indivisibilidade – exige que todas as operações (solicitações do SQL) de uma transação estejam concluídas. Caso contrário, a transação é abortada. Se uma transação T1 tiver quatro solicitações de SQL, todas devem ser concluídas com sucesso, senão a transação inteira é abortada. Em outras palavras, uma transação é abordada como uma única e indivisível unidade lógica de trabalho.

Page 4: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Propriedades de uma transação:

Consistência – indica a permanência do estado consistente do BD. A transação leva o banco de dados de um estado consistente a outro. Quando concluída, o banco deve estar em estado consistente. Se qualquer parte da transação violar uma restrição de integridade, toda transação é abortada.

Page 5: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Propriedades de uma transação:

Isolamento – significa que todos os dados utilizados durante a execução de uma transação não podem ser utilizados por uma segunda transação até que a primeira seja concluída. Em outras palavras, se uma transação T1 estiver sendo executada e utilizar o item de dado X, esse item não pode ser acessado por nenhuma outra transação até que o T1 termine. Essa propriendade é especialmente útil em ambientes de multiusuário, pois vários usuários podem acessar e atualizar o banco simultaneamente.

Page 6: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Propriedades de uma transação:

Durabilidade – garante que, uma vez feitas (consolidadas) alterações pelas transações, elas não podem ser desfeitas ou perdidas, mesmo em caso de falhas de sistema.

Page 7: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Propriedades de uma transação:

Ser serializável – garante que o escalonador da execução atual das transações produza resultados consistentes. Essa propriendade é importante em BD distribuídos e de multiusuário, em que várias transações provavelmente serão executadas de modo simultâneo. Naturalmente, se apenas uma transação for executada, a serialização não é problema.

Page 8: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Gerenciamento de transações com SQL

O suporte a transações é fornecido por dois comandos de SQL: COMMIT e ROLLBACK

Chegar a um COMMIT, caso em que todas as alterações são registradas de maneira permanentemente no banco de dados. Esse comando encerra automaticamente a transação de SQL.

Page 9: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Gerenciamento de transações com SQL

Chegar a um ROLLBACK, caso em que todas as alterações são abordadas e o banco de dados retorna ao seu estado consistênte anterior.

Chegar com sucesso ao fim do programa, caso em que todas as alterações são registradas de maneira permanente no BD. Essa ação equivale a COMMIT.

Page 10: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Gerenciamento de transações com SQL

O programa seja encerrado de modo anormal, caso em que todas as alterações feitas no BD são abordadas e retorne a seu estado consistente anterior. Essa ação equivale ao ROLLBACK

Page 11: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Log de transação

Armazena todas as transações efetuadas no BD.

As informações armazenadas nesse log são utilizadas para uma solicitação de recuperação acionada pelo comando ROLLBACK.

Page 12: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Log de transação

Esse log armazena: Um registro de início de transação Para cada componente de transação

Tipo de operação executada (atualização, exclusão, inserção)

Nomes dos objetos afetados pela transação (nome da tabela)

Valores “antes” e “depois” nos campos sendo atualizados

Ponteiros para as entradas anteriores e posteriores da mesma transação no log

O fim (COMMIT) da transação

Page 13: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Controle de Concorrência

É a coordenação de execuções simultâneas de transações em um BD multiusuário

O objetivo: garantir a serialização das transações nesse tipo de ambiente

Os principais problemas são: atualizações perdidas, dados não consolidados e recuperações inconsistentes

Page 14: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Atualizações perdidas

Ocorre quando 2 transações concorrentes T1 e T2, estão atualizando o mesmo elemento de dados e uma das atualizações é perdida (sobrescrita por outra aplicação).

Page 15: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado
Page 16: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado
Page 17: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Dados não consolidados

Ocorre quando duas transações, T1 e T2, são executadas de modo concorrente e a primeira (T1) é desfeita após a segunda (T2) ter acessado os dados não consolidados, violando assim a propriedade de isolamento de transações.

Page 18: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Recuperação inconsistentes

Ocorre quando uma transação acessa dados antes e após outras transações terminarem de trabalhar com esses dados.

Por exemplo, esse problema ocorreria se a transação T1 calcular uma função de sumarização (agregada) de um conjunto de dados, enquanto outra transação (T2) estiver atualizando os mesmo dados. O problema é que a transação pode ler alguns dados antes de serem alterados e outros após a alteração, produzindo assim, resultados inconsistentes.

Page 19: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Execução concorrente

É permitido que múltiplas transações sejam executadas concorrentemente. Vantagens:

- Melhor utilização de processador e discos, levando a um melhor desempenho do sistema.

- Redução do tempo médio de resposta para transações: transações curtas não precisam esperar pela execução de transações longas.

É necessário um esquema de controle de concorrência

Page 20: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Escalonador

É um processo especial do SGBD que estabelece a ordem em que são executadas as operações de transações concorrentes.

O escalonador intercala a execução de operações e bd, garantindo a serialização e o isolamento das transações.

Page 21: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

To T1

read (A)A := A – 50write (A)read (B)B := B + 50write (B)  read (A)

temp :=A * 0.1A := A – tempwrite (A)read (B)B := B + tempwrite (B)

Exemplo de escalonamento serial (Esc 1)

Page 22: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

To T1

read (A)A := A – 50write (A)

read (B)B := B + 50write (B) 

Read (A)temp :=A * 0.1A := A – tempwrite (A)

read (B)B := B + temp write (B)

Escalonameto não serial equivalente a Esc. 1

Page 23: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

To T1

read (A)A := A – 50

write (A)read (B)B := B + 50write (B) 

read (A)temp :=A * 0.1A := A – tempwrite (A)read (B)

B := B + temp write (B)

Escalonamento que não preserva soma A+B

Page 24: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Seriação

Premissa: cada transação preserva consistência do banco de dados – então execução serial de transações preserva consistência.

Um escalonamento (possivelmente concorrente) é seriável se é equivalente a algum escalonamento serial. Noções diferentes de equivalência de escalonamentos:- Seriação por conflito (mais usada)- Seriação por visão, por valor, etc.

Consideramos apenas operações read e write.

Page 25: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Seriação por conflito

Operações Oi e Oj de transações Ti e Tj, respectivamente, conflitam se e somente se existe algum dado D acessado por Oi e por Oj, e ao menos uma destas operações escreveu D.

Intuitivamente, um conflito entre operações Oi e Oj força uma ordem (lógica) temporal entre elas. Se Oi e Oj são consecutivas em um escalonamento e não conflitam, seus resultados permaneceriam os mesmos, mesmo que fossem intercambiadas no escalonamento.

Page 26: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Seriação por conflito (cont.)

1. Oi é read (D) e Oj é read (D). Oi e Oj não conflitam.

2. Oi é read (D) e Oj é write (D). Oi e Oj conflitam.

3. Oi é write (D) e Oj é read (D). Oi e Oj conflitam.

4. Oi é write (D) e Oj é write (D). Oi e Oj conflitam

Page 27: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Seriação por conflito (cont.)

Se um escalonamento E pode ser transformado em um escalonamento E’ através da troca de operações não conflitantes, dizemos que E e E’ são equivalentes por conflito.

Um escalonamento E é seriável por conflito se E é equivalente por conflito a um escalonamento serial.

Exemplo de escalonamento que não é seriável por conflito:

T3 T4

read (D)

write (D)

write (D)

Page 28: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

To T1

read (A)write (A)

read (B)write (B) 

read (A)write (A)

read (B) write(B)

Seriação por conflito - Escalonamento Esc. 3 pode ser transformado no escalonamento serial Esc. 1; Esc 3 é portanto seriável por conflito

read (A)write (A)read (B)write (B) 

read (A)write (A)read (B) write(B)

Esc. 3 Esc. 1

Page 29: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Protocolos baseados em locks

Um lock (bloqueio) é um mecanismo para controle de acessos concorrentes a um mesmo item de dados.

Dados podem ser bloqueados em dois modos:

- Exclusivo (E). Dado pode ser escrito ou lido.

- Compartilhado ( C). Dado pode ser apenas lido

. Requisições de locks (lock-E ou lock-C) são

feitas ao gerente de controle de concorrência. Transação fica suspensa até que lock seja concedido.

Page 30: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Deadlock

Considere o escalonamento parcialT3 T4

lockEx (B)

read(B)

B = B – 50

write(B)

lockCp (A)

read (A)

lockCp (B)

lockEx (A)

Nem T3 nem T4 podem prosseguir. Esta situação é chamada de deadlock.

Para tratar o deadlock é necessário desfazer T3 ou T4 (rollback), liberando os locks adquiridos.

Page 31: CONTROLE DE CONCORRÊNCIA Lílian Simão Oliveira. O que é uma transação?  É qualquer ação que lê ou grava em um banco de dados  Um banco de dados em estado

Protocolo de lock em duas fases

Garante escalonamento seriável por conflito.

Fase 1: Crescimento Transação pode requisitar novos locks. Transação não pode liberar locks.

Fase 2: Encolhimento Transação pode liberar locks. Transação não pode requisitar novos locks.