gestão de transacções noções básicas modelo simples modelo elaborado recuperação marcas...
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 PresentationTRANSCRIPT
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
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
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
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
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
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
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
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
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
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)
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
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)
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
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
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