Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas...

15
1 Gabriel David FEUP - Rua dos Bragas, 4099 Porto Codex - PORTUGAL Tel. 351-2-2041842 - Fax: 351-2-319280 Email: [email protected] URL: http://www.fe.up.pt Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

description

Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais. Gabriel David FEUP - Rua dos Bragas, 4099 Porto Codex - PORTUGAL Tel. 351-2-2041842 - Fax: 351-2-319280. Email: [email protected] URL: http://www.fe.up.pt. Execução de programas. - PowerPoint PPT Presentation

Transcript of Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas...

Page 1: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

1

Gabriel DavidFEUP - Rua dos Bragas, 4099 Porto Codex - PORTUGALTel. 351-2-2041842 - Fax: 351-2-319280

Email: [email protected]: http://www.fe.up.pt

Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Page 2: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 2

Execução série - um programa de cada vez

versus

Execução concorrente - vários programas partilham o CPU

Execução de programas

Problema: garantir que os vários programas não interferem de forma inesperada

Page 3: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 3

Programas e BD

Transacção uma execução de um programa podem coexistir várias transacções do mesmo programa

Interacção transacção/BD transacção lê dados da BD para o seu espaço de trabalho cálculos feitos no espaço de trabalho completamente isolados transacção escreve resultados do espaço de trabalho para a BD

BD

P1

P2

T1

T2T3

Page 4: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 4

Tipos de acesso Programas executados em série

modelo na cabeça do programador Acesso simultâneo para leitura e escrita

sistema de reservas - Programa: READ A; A=A+1; WRITE A;

Problema da actualização falhada: dois acessos diferentes reservarem o mesmo lugar

Acesso simultâneo só para leitura recenseamento sem interferência

A(BD) 5 5 5 5 6 6

T1: READ A A=A+1 WRITE A

T2: READ A A=A+1 WRITE A

A(T1) 5 5 6 6 6 6

A(T2) 5 5 6 6

Page 5: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 5

Propriedades das transacções

SGBD deve manter as propriedades ACID atomicidade - as operações da transacção efectivam-se na BD

ou todas ou nenhuma consistência - transacção sozinha preserva consistência da BD isolamento - as transacções apesar de concorrentes não

interferem; para cada par Tl - Tk o efeito final é o de executar Tl e depois Tk, ou Tk e depois Tl

durabilidade - efeitos de uma transacção com sucesso persistem na BD mesmo em caso de avarias no sistema

consistência primariamente um problema do programador da transacção SGBD pode verificar automaticamente regras de integridade

Page 6: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 6

Atomicidade

Importante também para manter a consistência Operação Transferência bancária T(valor, conta_origem, conta_destino)

1 READ conta_origem2 conta_origem= conta_origem - valor3 WRITE conta_origem4 READ conta_ destino5 conta_ destino = conta_ destino + valor6 WRITE conta_ destino interrupção em 4 deixa BD inconsistente

Razões para quebra de atomicidade avaria de hardware erro de software bloqueio em competição por recursos

Page 7: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 7

Bloqueios Isolamento entre transacções

dividir a BD em itens, recursos necessários para as transacções item - unidade de dados, desde a BD à tabela, linha ou campo controlo de acesso através do bloqueio de itens

Gestor de bloqueios regista, para cada item I, quais as transacções que estão a ler ou

escrever alguma parte de I controla o acesso de uma segunda transacção, de acordo com

uma determinada política granularidade dos itens condiciona peso da gestão de

bloqueios; transacção típica deve bloquear poucos itens

Bloqueio (lock) é um privilégio de acesso a um item primitiva de sincronização

Page 8: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 8

Gestão da concorrência

Controlar item com bloqueio pedir bloqueio de A antes da leitura outras transacções que tentem bloquear A esperam desbloquear A depois da escrita

Reserva de lugar Programa: LOCK A; READ A; A=A+1; WRITE A; UNLOCK A;

garante isolamento

A(BD) 5 5 5 5 6 6 6 7

T1: LOCK A READ A A=A+1 WRITE A UNLOCK A

T2: LOCK A …

A(T1) 5 6 6 6 6

A(T2) 6 7

Page 9: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 9

Problemas

Bloqueio activo (livelock) T1 e T2 pedem bloqueio de A; T1 obtém; T3 pede bloqueio de A;

quando T1 desbloqueia, T3 é servido e T2 fica à espera… hipótese de resolução: servir sempre o pedido mais antigo

Encravamento (deadlock)T1: LOCK A; LOCK B; UNLOCK A; UNLOCK B;

T2: LOCK B; LOCK A; UNLOCK B; UNLOCK A;

T1 bloqueia A e T2 bloqueia B; ambos ficam parados à espera que o outro desbloqueie

hipótese 1: obrigar a transacção a pedir todos os bloqueios de uma vez e o gestor concede todos ou nenhum

hipótese 2: atribuir uma ordem aos itens e os pedidos de bloqueio serem feitos por essa ordem

hipótese 3: não prevenir; SGBD verifica se há encravamento e aborta uma das transacções

Page 10: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 10

Escalonamento

Escalonamento de um conjunto de transacções ordem de execução dos passos elementares das várias transacções T1: READ A; A=A-10; WRITE A; READ B; B=B+10; WRITE B;

T2: READ B; B=B-20; WRITE B; READ C; C=C+20; WRITE C;

T1 T2

READ A

A=A-10

WRITE A

READ B

B=B+10

WRITE B

READ B

B=B-20

WRITE B

READ C

C=C+20

WRITE C

T1 T2

READ A

READ B

A=A-10

B=B-20

WRITE A

WRITE B

READ B

READ C

B=B+10

C=C+20

WRITE B

WRITE C

T1 T2

READ A

A=A-10

READ B

WRITE A

B=B-20

READ B

WRITE B

B=B+10

READ C

WRITE B

C=C+20

WRITE C

(B=B-10) (B=B-10) (B=B+10)

Page 11: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 11

Seriabilidade

Escalonamento série (caso ) todos os passos de cada transacção executados consecutivamente

Escalonamento serializável (caso ) efeito equivalente a um qualquer escalonamento série

Escalonamento não serializável (caso ) a evitar (!), mas sem olhar para expressões calculadas, apenas para

a sequência de operações e bloqueios

Escalonador parte do SGBD que arbitra conflitos entre transacções recebe informação do gestor de bloqueios evita bloqueio activo, encravamento e não seriabilidade fica facilitado se as transacções seguirem protocolos adequados escalonamento legal se não violar bloqueios

Page 12: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 12

Modelo simples

Assume-se que bloquear implica ler e desbloquear escrever

modelo simples é não fatal: pode impedir escalonamentos serializáveis, mas não aceita não serializáveis

Teste de seriabilidade de um escalonamento criar um grafo dirigido cujos nós são as transacções para cada passo Tk: UNLOCK Am, se existir a seguir um passo

Tl: LOCK Am, desenhar um arco de Tk para Tl.

escalonamento serializável se não houver ciclos no grafo as setas indicam a ordem de um escalonamento série

equivalente (ordenação topológica)

Page 13: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 13

Teste de seriabilidade

Não serializável T2 deve correr antes de T1 e vice-versa

T1 T2 T3

LOCK A

LOCK B

LOCK C

UNLOCK B

LOCK B

UNLOCK A

LOCK A

UNLOCK C

UNLOCK A

LOCK A

LOCK C

UNLOCK B

UNLOCK C

UNLOCK A

T3

T2T1

Page 14: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 14

Problema: garantir a seriabilidade combinação escalonador + protocolo protocolo de bloqueio em duas fases: todos os bloqueios (1ª

fase) são pedidos antes de todos os desbloqueamentos (2ª fase) trabalho do escalonador: basta conceder o bloqueio se estiver

disponível e suspender ou abortar a transacção caso não esteja, isto é, só se verifica a legalidade da transacção

garante-se que qualquer escalonamento legal é serializável um escalonamento série correspondente é o dado pela ordem

dos pontos de bloqueio das várias transacções• ponto de bloqueio é o instante em que ocorre o último bloqueio;

considera-se que todo o processamento ocorre nesse instante, antes de começar a desbloquear

verificar coerência com grafo de seriabilidade• T2 (pág anterior) não respeita bloqueio em duas fases

Bloqueio em duas fases

Page 15: Gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas temporais

Concorrência - 15

Contra-exemplo

T1 não é de duas fases não serializável T1: LOCK A; UNLOCK A; LOCK B; UNLOCK B

T2: LOCK A; LOCK B; UNLOCK A; UNLOCK B

T1 T2

LOCK A

UNLOCK A

LOCK A

LOCK B

UNLOCK A

UNLOCK B

LOCK B

UNLOCK B

conclusão: bloqueio em duas fases é óptimo

T1

T2