• 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

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

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

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

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

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