Gestão de transacções noções básicas modelo simples modelo elaborado - ppt carregar
PublicouIsabel Curro Alterado mais de 6 anos atrás
Apresentação em tema: "Gestão de transacções noções básicas modelo simples modelo elaborado"— Transcrição da apresentação:
1 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 Fax: URL:
2 Execução de programas Execução série - um programa de cada vez versus
Execução concorrente - vários programas partilham o CPU Problema: garantir que os vários programas não interferem de forma inesperada
3 Programas e BD Transacção Interacção transacção/BD T1 P1 T2 BD P2 T3
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 T1 P1 T2 BD P2 T3
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) T1:	READ A	A=A+1	WRITE A T2:	READ A	A=A+1	WRITE A A(T1) A(T2)
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
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_origem 2 conta_origem= conta_origem - valor 3 WRITE conta_origem 4 READ conta_ destino 5 conta_ destino = conta_ destino + valor 6 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
7 Bloqueios Isolamento entre transacções Gestor de bloqueios
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
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) T1:	LOCK A	READ A	A=A+1	WRITE A	UNLOCK A T2:	LOCK A … A(T1) A(T2)
9 Problemas Bloqueio activo (livelock) Encravamento (deadlock)
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
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 B=B-20 READ C C=C+20 WRITE C T1	T2 READ A READ B A=A-10 B=B-20 WRITE A WRITE B READ C B=B+10 C=C+20 WRITE C T1	T2 READ A A=A-10 READ B WRITE A B=B-20 WRITE B B=B+10 READ C C=C+20 WRITE C  (B=B-10)  (B=B-10)  (B=B+10)
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
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)
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 UNLOCK A UNLOCK C T2 T1 T3
14 Bloqueio em duas fases Problema: garantir a seriabilidade
FEUP/LEIC TSGBD Bloqueio em duas fases 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 Gabriel David
15 Contra-exemplo T1 não é de duas fases   não serializável T1
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 B UNLOCK B conclusão: bloqueio em duas fases é óptimo T1 T2