32
1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas mesmo que a exigência anterior seja mantida caso não exista controle de concorrência. Estes problemas são denominados Anomalias de Sincronismo.

1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

Embed Size (px)

Citation preview

Page 1: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

1

CONTROLE DE CONCORRÊNCIA

• Exigência de consistência de transações que executem isoladamente.

• A execução simultânea de transações, pode ocasionar problemas mesmo que a exigência anterior seja mantida caso não exista controle de concorrência. Estes problemas são denominados Anomalias de Sincronismo.

Page 2: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

2

Anomalias de Sincronismo

Perda de Consistência. Acesso a dados inconsistentes. Perda de atualizações. Exemplos:Considere os seguintes esquemas.

CURSOS [ Código, Nome, NumMatr ]TURMAS [Código, Matricula]

Page 3: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

3

Critérios de Consistência

C1 - O código de cada curso é único.

C2 -Todo o código existente em Turmas deve estar presente em Cursos.

C3 -O atributo NumMatr presente em Turmas indica o número de alunos matriculados em cada curso,

Page 4: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

4

Transações

Matricule (m,c)Início_Trans

M1 LER t de Cursos onde Código = c;Se existe t então

M2 GRAVE a tupla (m,c) em Turmas;

NumMatr = NumMatr + 1; M3 GRAVE t em Cursos;

Fim seFim_Trans.

Page 5: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

5

TransaçõesCancele (c) Início_TransC1 Delete t de Cursos onde Código = c;C2 Delete as tuplas de Turmas onde Código= c;

Fim_Trans.

Liste (m) Início_TransL1 LER as tuplas de Turmas onde Matricula= m;

Liste tuplas lidas;L2 LER as tuplas de Cursos onde o código seja igual aos

códigos lidos anteriormente ; Liste tuplas;

Fim_Trans.

OBS: As transações preservam consistência de forma isolada ou com mecanismos de controle.

Page 6: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

6

Exemplos

Considere a seguinte seqüência de operações: M11 M21 M31 L1 L2 C1 C2 M12 M22 M32

Esta seqüência determina uma execução serial.EXEMPLO 1:Supondo a existência inicial de um determinado curso e a seguinte execução de comandos:

M1 C1 C2 M2 M3

Nota-se que execução viola o 2o critério de consistência caso o cursoCancelado seja o mesmo que o matriculado.

Page 7: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

7

Exemplos

EXEMPLO 2:

Suponha que na relação Turmas exista um certo aluno matriculado em uma determinada disciplina. Considere uma execução concorrente a seguir:

L1 C1 C2 L2

A transação Liste é inconsistente caso a transação Cancele exclua o curso listado

Page 8: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

8

EXEMPLO 3:Considere que um determinado curso esteja cadastrado na relação Curso. Suponha a execução concorrente que segue:

M11 M12 M22 M32 M21 M31

Esta execução causa uma inconsistência no BD, pois como o valor lido pelas 2 transações é o mesmo a ação do comando M31 sobrepõe com o mesmo valor incrementado o atributo NumMatr produzido pela transação 2.

Page 9: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

9

Escalonadores

Notação:READ(Q) Lê o conteúdo do item Q para a

variável q do programa.WRITE(Q) Grava o valor de q no item Q.

Page 10: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

10

SeriaisConsidere as seguintes transações e as possíveis execuções seqüenciais :T0 : Read (A) T1 : Read (A)

A: A-50 x: A * 0.1 Write (A) A: A – x Read (B) Write (A) B: B + 50 Read (B) Write (B) B: B +x Write (B)

Valores A B

Iniciais 1000 2000

T0 T1 855 2145

T1 T0 850 2150

Page 11: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

11

Não-SeriaisT0 T1

Read (A) A: A-50

Read (A)x: A

* 0.1A: A

– x

Write (A) Read (B)

Write (A)Read (B) B: B + 50 Write (B)

B: B +x Write (B)

Valores A BIniciais 1000 2000T0 T1 950 2100

Page 12: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

12

Não-Seriais T0 T1

Read (A) A: A-50Write (A)

Read (A)

x: A * 0.1

A: A – xWrite

(A) Read (B) B: B + 50 Write (B)

Read (B) B: B +x Write (B)

Valores A BIniciais 1000 2000T0 T1 855 2145

Page 13: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

13

Conclusões: Seriais e Não-Seriais

• O número de escalonadores seriais válidos é n!, onde n é o número de transações a serem executadas.

• O número de escalonadores não-seriais válidos é possivelmente maior que n! .

• Nem sempre um escalonador não serial, concorrente, produz um resultado correto

Page 14: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

14

Conclusões: Seriais e Não-Seriais

• Um resultado correto é obtido por escalonadores concorrentes sempre que o resultado obtido seja igual ao produzido por um escalonador serial.

• Quando o resultado de um par de operações é o mesmo ,independente da ordem em que são executadas, diz-se que elas são comutáveis.

• As operações relevantes nos escalonadores são as de leitura e gravação.

Page 15: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

15

Escalonadores com conflito de Seriabilidade

Diz-se que duas operações são conflitantes se elas operam sobre o mesmo item de dados, sendo que no mínimo uma delas é uma gravação, e são emitidas por diferentes transações.

Esquematicamente, considerando a última conclusão (slide anterior), usaremos a seguinte notação :

• Ri(x) - para operação de leitura do item x realizada pela transação i.

• Wi(x) - para operação de gravação do item x realizada pela transação i.

Page 16: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

16

Escalonadores com Seriabilidade de conflito

Se Ii precede Ij e são instruções diferentes e não

conflitantes então pode-se trocar a ordem entre elas gerando-se assim um novo escalonador que diferem apenas na ordem destas operações.Exemplo :

E5 : Ri(x), Rj(x),Wj(y), Wi(x) E6 : Rj(x),Wj(y), Ri(x), Wi(x)

Escalonadores serializáveis em conflito

Dois escalonadores são equivalentes, se para cada par de operações conflitantes Ii e Ij tal que Ii precede Ij em En

então no escalonador Em esta precedência será mantida.

Page 17: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

17

Contra Exemplo

Dois escalonadores podem produzir o mesmo resultado e não serem equivalentes em conflito.

P. ex: T0 : READ(A ) T1 : READ(B )A: A-50 B: B-10WRITE (A) WRITE (B)READ(B) READ(A)

B: B +50 A: A +10

WRITE (B) WRITE (A)

E8 : R0(A) W0(A) R1(B) W1(B) R0(B) W0(B) R1(A) W1(A)

E9 : R0(A) W0(A) R0(B) W0(B) R1(B) W1(B) R1(A) W1(A)

Valores INICIAIS : A = 1000 B= 2000FINAIS : A = 960 B= 2040

Page 18: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

18

Escalonadores Equivalentes em Visão

Dois escalonadores E e E’, possuindo as mesmas transações, são ditos equivalentes em visão se obedecerem as seguintes condições:

1.Para cada item Q, se a transação Ti lê o valor produzido por Tj no escalonador E então no escalonador E’ precisa também ocorrer o mesmo;

2.Para cada item Q, se a transação Ti lê o valor inicial de Q no escalonador E então no escalonador E’ precisa também ler o valor inicial de Q;

3.Para cada item Q, a operação de gravação final de cada item deve ser praticado pela mesma transação em ambos escalonadores.

Exemplos : Serial(S1) e Serial(S2) não equivalentes. Serial(S1) e E4 são equivalentes

Um escalonador E é serializável em visão se ele for equivalente em visão a um escalonador serial

Page 19: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

19

Exemplos:

EX: E9: R2(Q) W3(Q) W2(Q) W4(Q)

E9 Serial <T2,T3,T4>Todo escalonador serializável em conflito é serializável em visão mas a recíproca não é verdadeira.

Ex: E9

OBS: as gravações executadas por T3 e T4 no escalonador E9 são denominadas cegas pois não realizam nenhuma leitura anterior. Estas aparecem em escalonadores serializáveis em visão que não sejam serializáveis em conflito

Page 20: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

20

Verificando a seriabilidade de conflito

Seja E um escalonador. Construímos um grafo de precedência de E. Este grafo consiste em um par G= (V,A), onde v é o conjunto de vértices e A um conjunto de arestas.

Vértices representam transações presentes em EArestas consistem precedências onde ocorre um das três situações:

Ti executa W(Q) antes que Tj execute R(Q)Ti executa R(Q) antes que Tj execute W(Q)Ti executa W(Q) antes que Tj execute W(Q)Se a aresta Ti Tj existe no grafo de precedência ,isto implica que em qualquer escalonador serializável E’ equivalente a E, Ti precisa aparecer antes de Tj.

Page 21: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

21

Exemplos

T0 T1

T1 T0

T0 T1

Ti

TJ TK

Tn

Ordens parciais obtidas do grafo de precedência:

Ti Tj Tk Tn

Ti Tk Tj Tn

Page 22: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

22

Verificando a seriabilidade em visões

Considere o escalonador E9 : R2(Q) W3(Q) W2(Q) W4(Q)

T2 T3

T4 Não serializável em conflito mas, serializável em visão ao escalonador

<T2,T3,T4>.

Isto ocorre porque aresta T3 T2 não deveria existir no grafo haja visto que os valores produzidos por T2 e T3 não são usados por outra transação e T4 produz o valor final. As instruções W(Q) produzidas por T2 e T3 são denominadas inúteis. Assim o esquema de grafo de conflito não serve para a verificação da seriabilidade em visão.

Page 23: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

23

Protocolos Baseados em Bloqueio

Idéia Básica Quando um transação acessa um item de dados deve antes bloqueá-lo, caso este já esteja bloqueado por outra transação deve esperar até

que o item seja liberado Modos de Bloqueio

Compartilhado lock-s LS Exclusivo lock-x LX

Page 24: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

24

Regras de Compatibilidade

1. Compartilhado Quando o item desejado não esta

bloqueado por nenhuma transação ou esta bloqueado em modo compartilhado.

2. ExclusivoSomente quando o item desejado não esta bloqueado

Page 25: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

25

Transações Bem Formadas

Aquelas que sempre bloqueiam o item de dados em modo compartilhado antes de lê-lo e sempre bloqueiam em modo exclusivo antes de gravá-lo

Duas transações estão em conflito se elas desejam bloquear o mesmo item de dados em modos incompatíveis.

Page 26: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

26

ExemplosT7: Lock-x (B)

Read (B)B: B-50Write (B)Unlock (B)Lock –x (A)Read (A)A: A + 50Write (A) Unlock (A)

T8: Lock-s (A)Read (A)Unlock (A)Lock-s (B) Read (B)Unlock (B)Display (A + B)

Seja E14:

LX7 (B) R7(B) W7 (B) UL7 (B) LS8 (A) R8 (A) UL8 (A) LS8 (B) R8 (B) UL8 (B) LX7 (A) R7 (A) W7 (A) UL7 (A)

Inconsistente T8 lê A e B produzindo como resultado 250

Valores Iniciais: A=100 B=200

Page 27: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

27

ExemploT9: Lock-x (B)

Read (B)B: B-50Write (B)Lock–x (A)Read (A)A: A + 50Write (A) Unlock (B)Unlock (A)

T10: Lock-s (A)Read (A)Lock-s (B) Read (B)Display (A+B)Unlock (A)Unlock (B)

Seja E15: LX9 (B) R9(B) W9 (B) LS10 (A) R10 (A) LS10 (B) LX9 (A) .......

Impasse

Page 28: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

28

Protocolo de Bloqueio Bifásico (2PL)

A execução concorrente de transações é correta se observada as seguintes regras:

1.Transações bem formadas2.Regras de compatibilidade de

bloqueio são obedecidas 3.Cada transação após liberar um

bloqueio não solicita um novo bloqueio

A condição 3 pode ser expressa dizendo que as transações são Bifasicamente Bloqueadas

Page 29: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

29

Fases do ProtocoloTodas as transações devem obedecer as

seguintes fases:

Primeira Fase – Crescimento Durante a qual obtém seus bloqueios,mas

não libera bloqueio algum.

Segunda Fase – Retração Na qual os bloqueios são liberados mas

nenhum bloqueio pode ser requeridoEX: T9 e T10 são 2PL C-Ex: T7 e T8

Page 30: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

30

Seriabilidade e Isolamento O 2PL garante a seriabilidade de transações

A propriedade de isolamento só é alcançada caso todos os bloqueios exclusivos sejam até mantidos até a confirmação (commit). Tal como o esquema abaixo:

Begin TransactionAquisição de bloqueios antes de ler ou gravar

CommitLibera bloqueios

OBS: A vulnerabilidade do 2PL a impasses continua

Page 31: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

31

Tratamento de Impasses Situação Métodos

Algoritmo de Prevenção Algoritmo de Detecção e de Tratamento

PrevençãoPré- Declaração – bloquear todos os itens

Um item fica bloqueado por tempo excessivo Um item muito acessado pode causar

postergação indefinida

Page 32: 1 CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas

32

Detecção de Impasses Grafo Wait-for

T5 T6 T8 Sem impasse

T7

T5 T6 Com impasse

T7