• Nenhum resultado encontrado

c11-ctrl-conc

N/A
N/A
Protected

Academic year: 2021

Share "c11-ctrl-conc"

Copied!
21
0
0

Texto

(1)

Controle de Concorrência

• Um SGBD trabalha individualmente com uma transação, mas o grande desafio para sua consagração no mercado é sem dúvida a sua capacidade de tratar diversas transações simultaneamente.

• Multiprogramação - executar dois ou mais programas ao mesmo tempo.

• Multiprocessamento - sistema operacional que utiliza um computador multiprocessado e divide as tarefas para cada processador individualmente.

(2)

Controle de Concorrência

• O SGBD trabalha em conjunto com o Sistema Operacional para retirar a melhor performance possível na execução de transações concorrentes, garantindo inclusive a efetiva consistência de todas transações envolvidas.

• Um bom SGBD deve suportar e transacionar desde poucas transações ao mesmo tempo até dezenas e centenas de

transações simultaneamente.

• A sua capacidade de resolver os problemas que possam ocorrer durante as transações e a integridade que o mesmo garante, fazem com que o SGBD seja confiável.

(3)

Escalonamento ( schedules )

• Quando diversas transações são executadas

concorrentemente , a consistência do banco de dados pode ser destruída apesar de cada transação individual estar

correta.

• Escalonamento representa a ordem cronológica da execução de cada instrução.

• Uma transação de um programa deve sair de um estado consistente e levar o banco de dados a outro estado

consistente também.

(4)

Escalonamento

• Escalonamento Serial - consiste de uma seqüência de instruções de várias transações na qual as instruções pertencentes a uma única transação aparecem juntas naquele escalonamento.

• Vamos exemplificar com duas transações T0 e T1. • T0 - read A T1 - read A • A:=A-50 temp := A * 0.1 • write A A:=A-temp • read B write A • B:=B+50 read B • write B B:=B+temp • write B

(5)

Escalonamento

• T0 - read A 1000 • A:=A-50 950 • write A 950 • read B 2000 • B:=B+50 2050 • write B 2050 • T1 - read A 950 • temp:=A*0.1 • A:=A-temp 855 • write A 855 • read B 2050

(6)

Escalonamento

• T1 - read A 1000 • temp:=A*0.1 • A:=A-temp 900 • write A 900 • read B 2000 • B:=B+temp 2100 • write B 2100 • T0 - read A 900 • A:=A-50 850 • write A 850 • read B 2100 • B:=B+50 2150 • write B 2150

(7)

Escalonamento concorrente

• T0 - read A 1000 • A:=A-50 950 • write A 950 • T1 - read A 950 • temp:=A*0.1 • A:=A-temp 855 • write A 855 • read B 2000 • B:=B+50 2050 • write B 2050 • read B 2050

(8)

Escalonamento

• Escalonamento Não Serial - consiste de uma seqüência de instruções de várias transações intercaladas entre si, o que pode provocar temporariamente um estado inconsistente. • Vamos exemplificar com duas transações T0 e T1.

• T0 - read A T1 - read A • A:=A-50 temp := A * 0.1 • write A A:=A-temp • read B write A • B:=B+50 read B • write B B:=B+temp • write B

(9)

Escalonamento

• T0 - read A 1000 • A:=A-50 950 • T1 - read A 1000 • temp:=A*0.1 • A:=A-temp 900 • write A 900 • read B 2000 • write A 950 • read B 2000 • B:=B+50 2050 • write B 2050

(10)

Escalonamento

• Escalonamento de conflito serializável

• X = read(A) Y = read(A) - a ordem não importa.

• X = read(A) Y = write(A) - se X vem antes de Y, então X não vai ler o valor que Y gravar, se Y vem antes de X, então X vai ler o valor de Y, a ordem é importante.

• X = write(A) Y = read(A) - a ordem é importante, pois é o mesmo raciocínio anterior.

• X = write(A) Y = write(A) - a ordem é importante, pois somente o último comando write é que vai prevalecer no final.

(11)

Protocolo baseado em bloqueios

• Um modo de assegurar a seriabilidade é requerer que o

acesso aos itens de dados seja feito de uma maneira

mutuamente exclusiva; isto é, enquanto uma transação faz o acesso a um item de dado, nenhuma outra transação pode modificar aquele item.

• O método mais fácil de garantir isto, é fazer com que uma transação ao acessar um dado, mantenha um bloqueio

(12)

Protocolo baseado em bloqueios

• Bloqueios

– Partilhado - se uma transação T obteve um bloqueio (lock) no modo partilhado (representado por P) no item Q, então T pode ler este item, mas não pode gravar Q. – Exclusivo - se uma transação T obteve um bloqueio

(lock) no modo exclusivo (representado por X) no item Q, então T pode ler e gravar Q.

• matriz de compatibilidade de bloqueios

• Partilhado eXclusivo

• Partilhado Verdadeiro Falso

(13)

Protocolo baseado em bloqueios

• O modo partilhado compartilha com outro modo

partilhado e não com o exclusivo.

• Para representar um bloqueio partilhado utilizaremos a instrução lock-s(Q).

• Para representar um bloqueio exclusivo utilizaremos a instrução lock-x(Q).

• Para representar o desbloqueio utilizaremos a instrução unlock(Q).

(14)

Protocolo baseado em bloqueios

• Bloqueio de duas fases.

– Fase de crescimento : uma transação pode obter bloqueios, mas não pode liberar nenhum bloqueio.

– Fase de encolhimento : uma transação libera bloqueios, mas não pode obter qualquer novo bloqueio.

• Inicialmente, uma transação está na fase de crescimento. Ela pode adquirir tantos bloqueios quantos forem

necessários. Uma vez que libere um bloqueio, a transação entra na fase de encolhimento e não pode mais bloquear nenhum dado, até que a transação termine. Só então ela pode começar uma outra transação com novos bloqueios.

(15)

Protocolo baseado em bloqueios

• Bloqueio baseado em grafos.

• O modelo mais simples requer que tenhamos o conhecimento anterior da ordem na qual os itens do banco de dados serão usados.

• A única instrução de bloqueio permitida é lock-x.

• O protocolo de bloqueio de árvore tem a vantagem sobre o protocolo de bloqueio de duas fase pois um desbloqueamento pode ocorrer mais cedo. Isso pode levar a menos tempo de espera e a um aumento na concorrência.

(16)

Protocolo baseado em bloqueios

• 1 - o primeiro bloqueio por T pode ser em qualquer item

de dado.

• 2 - subseqüentemente, um item de dado Q pode ser

bloqueado por T apenas se o pai de Q estiver atualmente bloqueado por T.

• 3 - itens de dados podem ser desbloqueados a qualquer momento.

• 4 - um item de dado que tenha sido bloqueado e

desbloqueado por T não pode ser subseqüentemente rebloqueado por T.

(17)

baseado em marcadores de tempo

• O método mais comum para fazer isso é usar o esquema de

ordenação por marcadores de tempo (timestamp ordering). • Dois métodos para implementar :

• Usar o valor do relógio do sistema como marcador de tempo; isto é, um marcador de tempo de uma transação equivalente ao valor marcado pelo relógio quando a transação entrar no sistema.

• Usar um contador lógico que seja incrementado depois que um novo marcador de tempo for atribuído; isto é um

(18)

baseado em marcadores de tempo

• W-timestamp (Q), que representa o maior marcador de

tempo de qualquer transação que executou write(Q) com sucesso.

• R-timestamp (Q), que representa o maior marcador de tempo de qualquer transação que executou read(Q) com sucesso.

• Esses marcadores de tempo são atualizados toda vez que uma nova instrução read(Q) ou write(Q) for executada.

(19)

Técnicas de validação

• Um esquema de controle de concorrência impõe algumas sobrecargas de execução de códigos e possíveis atrasos de transações.

• Pode ser desejável utilizar um esquema alternativo que imponha menos sobrecarga.

• Uma dificuldade em reduzir a sobrecarga é que não

sabemos previamente quais transações estarão envolvidas num conflito.

• Para tanto, precisamos fornecer um esquema para monitorar o sistema.

(20)

Técnicas de validação

• Fase de leitura - ocorre a execução da transação T, os vários dados são lidos, armazenados e gravados em

variáveis temporariamente. Todas as operações write são executadas em variáveis locais, sem atualizar o bd.

• Fase de validação - a transação T executa um teste de

validação para determinar se ela pode copiar para o banco de dados as variáveis locais temporárias que mantêm os resultados das operações write sem causar uma violação da seriabilidade.

• Fase de gravação - se a transação T obtém sucesso na validação (passo 2), então as atualizações são feitas no banco de dados. De outra forma, T é desfeita.

(21)

Granularidade múltipla

• Existem situações onde o bloqueio de todos os registros de uma tabela seria importante para garantir o sucesso de uma atualização total. Assim para uma sincronização da

transação necessitamos de uma forma de bloquear todos os registros de uma só vez.

• Esta situação chamamos de granularidade múltipla ou lock de estrutura.

• Este recurso ajuda no bloqueio dos registros, mas não

permite que nenhuma outra transação ocorra com nenhum registro desta tabela enquanto a mesma não encerrar.

Referências

Documentos relacionados

- Em caso de cancelamento da formação por parte da Workapt, o valor pago pelo(a) formando(a), será reembolsado na íntegra. O valor da inscrição é reembolsado parcialmente

A Educação de Jovens e Adultos (EJA), como o próprio nome diz, é um programa de ensino público de nível fundamental e médio que visa a formação de

para preenchimento de uma vaga para o Programa de Aprimoramento em Medicina Veterinária na área de Clínica Médica e Cirúrgica de Grandes Animais.. 1º A inscrição do

Na sucessão ervilhaca pelu- da/milho, não houve resposta à adubação nitro- genada; portanto, pode-se considerar que a má- xima eficiência econômica foi na dose zero, em que há

A delimitação deste período de pesquisa foi determinada por caracterizar-se como aquele em que ocorreu o processo de abertura comercial nos anos 2000, fundamental para uma

Esta fase está programada para funcionar por tempo indeterminado, comprometendo aproximadamente 3.360.000 BZLcoins.. Os BZLcoins gerados durante esta fase serão destinados

Por seu elevado poder calorífico, o biogás tem potencial para ser utilizado com fonte primária para geração de energia elétrica, exigindo, assim, uma avaliação da

Biólogo, por meio de empresa, efetuou vistoria no local e emitiu laudo e orçamento para remoção da colmeia/abelhas (fls. A remoção é efetuada com metolodogia