1 / 15

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

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: gtd@fe.up.pt URL: http://www.fe.up.pt. Execução de programas.

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 351-2-2041842 - Fax: 351-2-319280 Email: gtd@fe.up.pt URL: http://www.fe.up.pt

  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. T1 T2 T3 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 P1 BD P2

  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

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

  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

  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)

  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 LOCK B UNLOCK A LOCK A UNLOCK C UNLOCK A LOCK A LOCK C UNLOCK B UNLOCK C UNLOCK A T2 T1 T3

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

  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

More Related