450 likes | 557 Views
Introdução a Mecanismos de controle de concorrência. UFCG - COPIN Disciplina: Banco de Dados Professor: Marcus Sampaio Aluna: Kézia de V. Oliveira. Agenda. Conceitos iniciais básicos; Motivação; Introdução; Esquemas de controle de concorrência baseados em bloqueio;
E N D
Introdução a Mecanismos de controle de concorrência UFCG - COPIN Disciplina: Banco de Dados Professor: Marcus Sampaio Aluna: Kézia de V. Oliveira
Agenda • Conceitos iniciais básicos; • Motivação; • Introdução; • Esquemas de controle de concorrência baseados em bloqueio; • Esquemas de controle de concorrência não baseados em bloqueio; • Metodologias Misturadas; • Considerações Finais.
Conceitos iniciais básicos • O que é uma transação? • Uma seqüência de ações que são consideradas uma unidade atômica (indivisível) de trabalho. • O que é conflito entre transações? • O conflito entre trnasações ocorre quando mais de uma transação tenta acessar o mesmo item de dado. • O que é mecanismo de controle de concorrência? • É um mecanismo que garante a Consistência e a Isolação dos dados, dada a atomicidade das transações.
Motivação • Por que estudar mecanismos de controle de concorrência? • Trabalhamos em ambientes multi-tarefas • É necessário compartilhar dados; • É necessário manter a consistência dos dados. • Escolher dentre vários protocolos de CCMs (Mecanismos de Controle de Concorrência) qual o mais adequado para cada tipo de base de dados.
Introdução Como é tratado o compartilhamento de dados? Em sistemas que não lidam com transações concorrentes utiliza-se os conceitos de exclusão mútua e semáforos. Para transações concorrentes utilizamos o CCM. Serialização => estabelecer uma ordem de execução das transações.
Introdução • Como o CCM mantém a serialização? • Lock (Bloqueio); • Rollback; • Timestamp. • Como os CCMs podem ser categorizados? • Esquemas baseados em bloqueio; • Esquemas não baseados em bloqueio.
Esquemas baseados em bloqueio • Quais as características de um esquema baseado em bloqueio? • Segue o protocolo de duas fases para bloquear dados. • Suporta duas operações básicas. • Bloqueio – fase crescente; • Desbloqueio – fase de encolhimento. • Utiliza as operações rollback e locking para resolver conflitos sobre dados compartilhados.
Esquemas baseados em bloqueio • Como um esquema baseado em bloqueio funciona? • Tem como objetivo decidir que transações devem sofrer bloqueio ou rollback e quais operações poderão ser executadas. • Antes do conflito transações concorrentes não tem ordem de execução. • O CCM escolhe uma vítima para sofrer rollback ou aplica alguma suposição. • É possível melhorar esse método introduzindo alguma inteligência • Heurísticas
Operações de controle do bloqueio • Como podemos controlar o bloqueio de duas fases? • Através de 4 combinações diferentes. • Bloqueio simultâneo e liberação simultânea; • Bloqueio incremental e liberação simultânea; • Bloqueio simultâneo e liberação incremental; • Bloqueio incremental e liberação incremental.
Operações de controle do bloqueio • Bloqueio simultâneo e liberação simultânea Começo e fim do bloqueio Começo e fim da execução Começo e fim do desbloqueio Todas as operações são atômicas
Operações de controle do bloqueio • Bloqueio Incremental e liberação simultânea Bloqueia Executa Bloqueia Executa desbloqueia Gera deadlock: pode haver um ciclo de transações, T1, T2, …, Tn, tal que cada Ti fica esperando que sua predecessora retire um bloqueio sobre algum objeto.
Operações de controle do bloqueio • Bloqueio Simultâneo e liberação incremental Bloqueia Executa Desbloqueia Executa Desbloqueia Gera efeito cascading: para que um desbloqueio ocorra é necessário que outros desbloqueios ocorram.
Operações de controle do bloqueio • Bloqueio Incremental e liberação incremental • As fases de bloqueio, execução e desbloqueio são intercaladas. Gera efeito cascading e deadlock
Granularidade de bloqueio • É o tamanho da unidade de bloqueio. • Afeta o grau de concorrência • Pode ser de dois tipos: • Grosseira • Um arquivo inteiro ou uma relação; • Reduz o overhead e o grau de concorrência. • Fina • Dá origem ao problema fantasma; • Aumenta o overhead e o grau de concorrência.
O problema fantasma Bloquear uma tupla ou um conjunto de tuplas que não exista no Banco de Dados, realizar alguma operação sobre este item de dado bloqueado e em seguida inseri-lo no BD.
O problema fantasma T2: bloqueia 100, bloqueia 200, bloqueia 300 T2: Read (Amount = 1000, Amount 2000 e Amount = 3000): T1: bloqueia 400 (registro fantasma) T2: Soma = 2000 + 3000 => 5000 TI: Insert (400, Lenexa, 4000) na tabela Account T2: Relatar a soma = 5000 “não foi incluído o novo insert * T1: desbloqueia 400 T2: desbloqueia 100, 200, e 300 T2: Commit TI: Commit.
O problema fantasma • Como resolver o problema fantasma? • Bloqueio do índice. • Supõe um índice P para todas as instâncias de Lenexa; • T1 bloqueia o índice P; • T2 só pode acessar as instâncias de Lenexa quando T1 desbloquear o índice P. Importante: o bloqueio do índice pode ser explicado em termos de predicados – conjunto de atributos de uma relação.
Bloqueio com multigranularidade • O que é o bloqueio com multigranularidade? • Uma transação Ti bloqueia dados de uma maneira hierárquica. • De granularidade mais grossa a granularidade mais fina. • Para que serve o bloqueio com multigranularidade? • Ajudar as transações que acessam e modificam grande volume de dados. • Como é controlado os requerimentos do bloqueio com multigranularidade? • Utilizando 5 modalidades de bloqueio. • Read, Write, Intention Read, Intention Write, Read Intention Write.
Bloqueio com multigranularidade • Seja o seguinte exemplo: uma transação Ti, que quer ler um arquivo 3 e o Tj que quer escrever R32. Então: 1. Ti, pretende ler ao arquivo 3, que é o nó raiz da base de dados, aplica o bloqueio ir a base de dados. 2. Aplica o bloqueio ir na área I. 3. Finalmente aplica o bloqueio r ao arquivo 3. 4. Tj aplica o bloqueio iw à base de dados com sucesso. 5. Aplica o bloqueio iw à área I com sucesso. 6. Ele não pode aplicar o iw ao arquivo 3 porque vai entrar em conflito com o bloqueio r do Ti (ver a matriz do conflito).
Bloqueio com multigranularidade • Seja o seguinte exemplo: uma transação Ti, que quer ler um arquivo 3 e o Tj que quer escrever R32. Então: 7. O Ti libera r do arquivo 3. 8. T7 agora ajusta o iw no arquivo 3 e aplica w em R32. 9. Tk quer ler a área I e assim aplicar ir na base de dados qunado for possível. 10. Tenta ajustar o bloqueio de r na área 1 mas entra em conflito com o bloqueio de Tj (iw) (ver o matriz do conflito). 11. Espera o Tj para liberar seu bloqueio iw na área I
Abordagens heurísticas em esquemas de bloqueio • Resolve o conflito • Esquemas agressivos. • Não resolve o efeito colateral do conflito. • Deadlock, etc. • Minimiza o tempo de espera de uma transação.
Esquemas Agressivos • Espera Cautelosa • Utiliza os conceitos de holder – transação que tem liberdade para manipular os dados – e requestor – transação que solicita os dados, mas não tem liberdade de manipulá-los. • Destroe apenas o bloqueio do requestor e não do holder. • Utiliza o algorítmo CW • Nunca aborta o holder; • A fila de espera de uma transação pode ser maior que 1. • É livre de deadlock; • Pode ser otimizado.
Esquemas Agressivos • Prioridade de Execução • Utiliza os conceitos de holder e requestor; • Dá enfoque ao requestor. • Se o holder estiver bloqueado ele é abortado.
Esquemas Agressivos • Krishna • Utiliza a idéia que transações durante sua vida de execução herdam um número de atributos, chamados de dinâmicos. • Um subconjunto identifica o status da execução da transação. • Número de vezes que uma transação foi bloqueada; • Número de vezes que uma transação sofreu rollback; • A transação que processa mais entidades tem a prioridade. • Utiliza os seguintes conceitos: • Esquema da resolução de conflitos; • Conjunto de resolução de conflitos.
Esquemas Agressivos • Krishna • Esquema da resolução de conflitos Importante: pode utilizar o conceito de CRS.
Esquemas Agressivos • Krishna • Assim, o algoritmo de Krishna é defenido da seguinte forma: Th = a transação holder Tr = a transação requestor
Esquemas Agressivos • Krishna • Etapas da resolução de conflitos de Krishna
Desvantagens de esquemas baseados em bloqueio • Por que esquemas baseados em bloqueio não são eficientes? • Geram overhead; • Tem que detectar e resolver deadlocks; • Pouco mais de mil instruções tem que ser realizadas para executar bloqueio e desbloqueio.
Esquemas não baseados em bloqueio • Utilizam o conceito de timestamp • A ordem de execução das transações é definida antes que elas comecem a executar. • Cada transação tem um único timestamp.
Esquemas não baseados em bloqueio • O que timestamp traz de novo? • Elimina o custo de bloqueio; • Introduz mais flexibilidade.
Esquemas não baseados em bloqueio • Esquema simples do Timestamping • Cada transação é associada com um único timestamp – geralmente um inteiro; • A transação coloca seu timestamp no dado solicitado; • Caso o dado não tenha timestamp. • É baseado na comparação do timestamp da transação e no timestamp do dado solicitado; • Timestamp funciona como um bloqueio. • Este esquema não funciona. • “Bloqueios” de leitura e escrita não são diferenciados.
Esquemas não baseados em bloqueio • Esquema básico do Timestamping • Resolve o problema do “bloqueio” exclusivo; • Associa dois timestamp com cada dado • Para permitir leitura e escrita. • Operação de leitura • Timestamp da transação > timestamp de escrita dos dados. • Operação de escrita • timestamp da transação > timestamp dos dados. • Trás problemas de overhead.
Metodologias Misturadas • Mistura características do bloqueio em duas fases e do Timestamping. • Reforça a exclusão mútua. • Resolve conflitos. • Existe dois mecanismos famosos: • Wound-Wait e • Wait-Die
Metodologias Misturadas • Wound-Wait • O holder mais jovem (maior timestamp) realiza rollback. • Não bloqueia o requestor mais antigo => não ocorrência de deadlock. Ti = a transação holder Tj = a transação requestor
Metodologias Misturadas • Wait-Die • A ação é feita apenas no requestor. • Um requestor sofre rollback se a operação é mais nova do que a operação do holder. • O requestor mais recente sofre rollback => não ocorrência de deadlock. Ti = a transação holder Tj = a transação requestor
Metodologias das versões múltiplas • Objetivos • Minimizar o tempo de espera do requestor. • Os pedidos dos dados sempre são fornecidos imediatamente. • Funcionamento • Cada operação de escrita gera uma nova versão dos dados. • Cria versões de séries de tempo do dado • Tarefa do esquema • Identificar a melhor versão, a que possui serialização, e a reserva para a transação que solicitou os dados.
Mecanismo de controle de concorrência otimista • É otimista porqueacredita na eficiência e na esperança que os conflitos entre transações não ocorrerão; • Objetivo • Reduzir o overhead de bloqueio pela operação atraso de bloqueio. • Funcionamento • Utiliza três operações para executar uma transação • Ler, Validar, Escrever • Problema • Gera overhead através das operações de rollback.
Bloqueio em duas fases para BDs Distribuídos • Requer uma implementação diferente para o mecanismo de bloqueio em duas fases. • Os itens de dados são diferentes. • Existem três maneiras diferentes que um esquema de bloqueio de duas fases pode ser aplicadas a BDs distribuídos: • Bloqueio de duas fases centralizado; • Bloqueio da cópia primária; • Bloqueio de duas fases distribuído.
Bloqueio em duas fases para BDs Distribuídos • Bloqueio de duas fases centralizado. • Um nó é responsável por controlar todas as atividades de bloqueio • Um nó tem somente um gerente de bloqueio. • Os itens de dados são diferentes. • O nó gerente toma a decisão de bloqueio. • Algoritmo Primary Site two-phase • Utiliza uma determinada quantidade de nós para processar a transação; • Possui um nó de coordenação; • O restante dos nós são chamados de participantes.
Bloqueio em duas fases para BDs Distribuídos • Bloqueio da cópia primária. • Possui nós múltiplos; • O nó gerente de bloqueio é responsável por um subconjunto dos dados; • Quando uma cópia de um dado é bloqueado, então, no caso de replicação completa ou parcial, todas as cópias dos dados são implicitamente bloqueadas; • Assim, cópia bloqueada dos dados serve como a cópia primária dos dados, já que é consistente.
Bloqueio em duas fases para BDs Distribuídos • Bloqueio da duas fases distribuído. • Todos os nós podem servir como gerente de bloqueio; • Há partição da base de dados; • Cada participante executa e controla uma parte da transação. • No final do processamento emite uma mensagem “fim de processamento” ao coordenador.
Considerações Finais Esquemas baseados em bloqueio não são eficientes devido a possíveis ocorrências de deadlocks. Esquemas não baseados em bloqueios apresentam uma melhora em relação aos anteriores, mas apresenta problemas de overhead. A melhor solução para implementar mecanismos de controle de concorrência é utilizando metodologias misturadas com a presença de heurísticas.
Bibliografia Vijay Kumar, Mobile Database Systems, John Wiley & Sons,2006