A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

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

2 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.

3 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.

4 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.

5 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.

6 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.

7 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.

8 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.

9 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.

10 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

11 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.

12 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

13 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

14 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).

15

16

17 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.

18 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.

19 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

20 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.

21 ToT1 read (A) A := A – 50 write (A) read (B) B := B + 50 write (B) read (A) temp :=A * 0.1 A := A – temp write (A) read (B) B := B + temp write (B) Exemplo de escalonamento serial (Esc 1)

22 ToT1 read (A) A := A – 50 write (A) read (B) B := B + 50 write (B) Read (A) temp :=A * 0.1 A := A – temp write (A) read (B) B := B + temp write (B) Escalonameto não serial equivalente a Esc. 1

23 ToT1 read (A) A := A – 50 write (A) read (B) B := B + 50 write (B) read (A) temp :=A * 0.1 A := A – temp write (A) read (B) B := B + temp write (B) Escalonamento que não preserva soma A+B

24 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.

25 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.

26 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

27 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)

28 ToT1 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. 3Esc. 1

29 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.

30 Deadlock  Considere o escalonamento parcial T3T4 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.

31 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.


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google