CONTROLE DE CONCORRÊNCIA

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

Checkpoint SGBD com alta demanda de transações Checkpoint
Técnicas de Controle de Concorrência
CONTROLE DE CONCORRÊNCIA
Introdução Gdes. bancos de dados: Concorrência: Transação:
Controle de Concorrência Serializabilidade
Disciplina Banco de Dados II Técnicas de Controle de Concorrência
© Marcelo Bezerra de AlcântaraBanco de Dados II – Controle de Concorrência - 1 Disciplina Banco de Dados II Introdução ao Controle de Concorrência Msc,
© Marcelo Bezerra de AlcântaraBanco de Dados II - Transação - 1 Disciplina Banco de Dados II Gerenciamento de transações Msc, Marcelo Bezerra de Alcântara.
Disciplina Banco de Dados II Revisão da Matéria VP2
Recuperação Como garantir a integridade da informação, em caso de avarias de HW ou SW forma de suportar a reposição de um estado consistente da informação.
Bloqueios partilhados
Gestão de transacções noções básicas modelo simples modelo elaborado
Deadlocks - Impasses 3.1. Recurso 3.2. Introdução aos deadlocks
Modelos no Domínio do Tempo de Sistemas LTI Contínuos
Transações Atômicas Distribuídas
Gerenciamento de Arquivos, Páginas e Registros
Resolução.
Sumário 1 SQL Embutida 2 Processamento de Consultas
Análise de Requisitos Use Case Renata Araujo Ricardo Storino
Modelos de Transações para Ambiente de Computação Móvel
Capítulo 7: Deadlocks.
Capítulo 4: Estado Global
Árvores.
Arquivos Seqüenciais Inhaúma Neves Ferraz
EXPRESSÕES ARITMÉTICAS
Estatística Básica Utilizando o Excel
Controle de Concorrência em Sistemas Distribuídos
Introdução à Lógica de Programação (cont.)
Introdução a Mecanismos de controle de concorrência
Capítulo 3 Deadlocks - Impasses 3.1. Recurso
FUNÇÃO MODULAR.
Fundamentos de Banco de Dados Prof. Alexander Roberto Valdameri
Programação Baseada em Objectos Desenho de TAD
RECUPERAÇÃO APÓS FALHA
TENSÕES E CORRENTES EM CIRCUITOS TRIFÁSICOS BALANCEADOS Sistemas de potência são alimentados por geradores trifásicos. De maneira ideal, os geradores suprem.
Monitoria GDI Aula Prática
Campus de Caraguatatuba
Lógica do Sequenciamento das Operações
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
Gerenciamento de Transações - Introdução
Locks.
Problema de Inconsistência em Transações
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 12. Estados Objetivo: compreender a notação do diagrama de estados.
Cadastro de Docentes e Auxiliares de Educação Infantil
Coordenação Geral de Ensino da Faculdade
Medidas de posição  Estudando as distribuições de  frequência,  percebe-se que existe uma  posição de  concentração dos valores, que podem estar mais concentrados no início, no meio ou no 
Controle de Concorrência em Transações Álvaro Vinícius de Souza Coêlho
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
Prof. Alessandro Gonçalves
Transações Prof: Galina
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Conceitos básicos em grafos
Controle Distribuído da Concorrência
Aula 6 - Estruturas de Controle
Exercícios SGBD - CESPE
Controle de concorrência
Campus de Caraguatatuba Aula 2: Somatório e Produtório
UML - Unified Modeling Language
Controle de Concorrência Locks. Conceito de Transação Transações podem ser vistas como um grupo de operações combinadas em uma unidade lógica de trabalho.
Transações Concorrentes
Contagem Sequencial do Estoque
Assunto: Transações concorrentes, Disciplina: Banco de dados II, profa. Cristina Paludo Max W. Ourique Ranieri R. Tremea
Bloqueios de Atualização
Protocolo de Bloqueios
Serialização Relaxada em Banco de Dados Múltiplos Andressa Sebben
Sumário 1 Processamento de Consultas 2 Introdução a Transações
Sumário 1 Processamento de Consultas 2 Introdução a Transações
Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções.
Weyler N M Lopes © Especialização em Banco de Dados Página 1 BANCO DE DADOS AULA - 07.
Transcrição da apresentação:

CONTROLE DE CONCORRÊNCIA Exigência de consistência de transações que executem isoladamente. A execução simultânea de transações, pode ocasionar problemas mesmo que a exigência anterior seja mantida caso não exista controle de concorrência. Estes problemas são denominados Anomalias de Sincronismo.

Anomalias de Sincronismo Perda de Consistência. Acesso a dados inconsistentes. Perda de atualizações. Exemplos: Considere os seguintes esquemas. CURSOS [ Código, Nome, NumMatr ] TURMAS [Código, Matricula]

Critérios de Consistência C1 - O código de cada curso é único. C2 -Todo o código existente em Turmas deve estar presente em Cursos. C3 -O atributo NumMatr presente em Turmas indica o número de alunos matriculados em cada curso,

Transações Matricule (m,c) Início_Trans M1 LER t de Cursos onde Código = c; Se existe t então M2 GRAVE a tupla (m,c) em Turmas; NumMatr = NumMatr + 1; M3 GRAVE t em Cursos; Fim se Fim_Trans.

Transações Cancele (c) Início_Trans C1 Delete t de Cursos onde Código = c; C2 Delete as tuplas de Turmas onde Código= c; Fim_Trans. Liste (m) L1 LER as tuplas de Turmas onde Matricula= m; Liste tuplas lidas; L2 LER as tuplas de Cursos onde o código seja igual aos códigos lidos anteriormente ; Liste tuplas; OBS: As transações preservam consistência de forma isolada ou com mecanismos de controle.

Exemplos Considere a seguinte seqüência de operações: M11 M21 M31 L1 L2 C1 C2 M12 M22 M32 Esta seqüência determina uma execução serial. EXEMPLO 1: Supondo a existência inicial de um determinado curso e a seguinte execução de comandos: M1 C1 C2 M2 M3 Nota-se que execução viola o 2o critério de consistência caso o curso Cancelado seja o mesmo que o matriculado.

Exemplos EXEMPLO 2: L1 C1 C2 L2 Suponha que na relação Turmas exista um certo aluno matriculado em uma determinada disciplina. Considere uma execução concorrente a seguir: L1 C1 C2 L2 A transação Liste é inconsistente caso a transação Cancele exclua o curso listado

EXEMPLO 3: Considere que um determinado curso esteja cadastrado na relação Curso. Suponha a execução concorrente que segue: M11 M12 M22 M32 M21 M31 Esta execução causa uma inconsistência no BD, pois como o valor lido pelas 2 transações é o mesmo a ação do comando M31 sobrepõe com o mesmo valor incrementado o atributo NumMatr produzido pela transação 2.

Escalonadores Notação: READ(Q) Lê o conteúdo do item Q para a variável q do programa. WRITE(Q) Grava o valor de q no item Q.

Seriais Considere as seguintes transações e as possíveis execuções seqüenciais : T0 : Read (A) T1 : Read (A) A: A-50 x: A * 0.1 Write (A) A: A – x Read (B) Write (A) B: B + 50 Read (B) Write (B) B: B +x Write (B) Valores A B Iniciais 1000 2000 T0 T1 855 2145 T1 T0 850 2150

Não-Seriais T0 T1 Valores A B Iniciais 1000 2000 T0 T1 950 2100 Read (A) A: A-50 Read (A) x: A * 0.1 A: A – x Write (A) Read (B) Write (A) Read (B) B: B + 50 Write (B) B: B +x Valores A B Iniciais 1000 2000 T0 T1 950 2100

Não-Seriais T0 T1 Read (A) A: A-50 Write (A) x: A * 0.1 A: A – x Read (B) B: B + 50 Write (B) B: B +x Valores A B Iniciais 1000 2000 T0 T1 855 2145

Conclusões: Seriais e Não-Seriais O número de escalonadores seriais válidos é n!, onde n é o número de transações a serem executadas. O número de escalonadores não-seriais válidos é possivelmente maior que n! . Nem sempre um escalonador não serial, concorrente, produz um resultado correto

Conclusões: Seriais e Não-Seriais Um resultado correto é obtido por escalonadores concorrentes sempre que o resultado obtido seja igual ao produzido por um escalonador serial. Quando o resultado de um par de operações é o mesmo ,independente da ordem em que são executadas, diz-se que elas são comutáveis. As operações relevantes nos escalonadores são as de leitura e gravação.

Escalonadores com conflito de Seriabilidade Diz-se que duas operações são conflitantes se elas operam sobre o mesmo item de dados, sendo que no mínimo uma delas é uma gravação, e são emitidas por diferentes transações. Esquematicamente, considerando a última conclusão (slide anterior), usaremos a seguinte notação : Ri(x) - para operação de leitura do item x realizada pela transação i. Wi(x) - para operação de gravação do item x realizada pela transação i.

Escalonadores com Seriabilidade de conflito Se Ii precede Ij e são instruções diferentes e não conflitantes então pode-se trocar a ordem entre elas gerando-se assim um novo escalonador que diferem apenas na ordem destas operações. Exemplo : E5 : Ri(x), Rj(x),Wj(y), Wi(x) E6 : Rj(x),Wj(y), Ri(x), Wi(x) Escalonadores serializáveis em conflito Dois escalonadores são equivalentes, se para cada par de operações conflitantes Ii e Ij tal que Ii precede Ij em En então no escalonador Em esta precedência será mantida.

Contra Exemplo Dois escalonadores podem produzir o mesmo resultado e não serem equivalentes em conflito. P. ex: T0 : READ(A ) T1 : READ(B ) A: A-50 B: B-10 WRITE (A) WRITE (B) READ(B) READ(A) B: B +50 A: A +10 WRITE (B) WRITE (A) E8 : R0(A) W0(A) R1(B) W1(B) R0(B) W0(B) R1(A) W1(A) E9 : R0(A) W0(A) R0(B) W0(B) R1(B) W1(B) R1(A) W1(A) Valores INICIAIS : A = 1000 B= 2000 FINAIS : A = 960 B= 2040

Escalonadores Equivalentes em Visão Dois escalonadores E e E’, possuindo as mesmas transações, são ditos equivalentes em visão se obedecerem as seguintes condições: Para cada item Q, se a transação Ti lê o valor produzido por Tj no escalonador E então no escalonador E’ precisa também ocorrer o mesmo; Para cada item Q, se a transação Ti lê o valor inicial de Q no escalonador E então no escalonador E’ precisa também ler o valor inicial de Q; Para cada item Q, a operação de gravação final de cada item deve ser praticado pela mesma transação em ambos escalonadores. Exemplos : Serial(S1) e Serial(S2) não equivalentes. Serial(S1) e E4 são equivalentes Um escalonador E é serializável em visão se ele for equivalente em visão a um escalonador serial

Exemplos: EX: E9: R2(Q) W3(Q) W2(Q) W4(Q) E9  Serial <T2,T3,T4> Todo escalonador serializável em conflito é serializável em visão mas a recíproca não é verdadeira. Ex: E9 OBS: as gravações executadas por T3 e T4 no escalonador E9 são denominadas cegas pois não realizam nenhuma leitura anterior. Estas aparecem em escalonadores serializáveis em visão que não sejam serializáveis em conflito

Verificando a seriabilidade de conflito Seja E um escalonador. Construímos um grafo de precedência de E. Este grafo consiste em um par G= (V,A), onde v é o conjunto de vértices e A um conjunto de arestas. Vértices representam transações presentes em E Arestas consistem precedências onde ocorre um das três situações: Ti executa W(Q) antes que Tj execute R(Q) Ti executa R(Q) antes que Tj execute W(Q) Ti executa W(Q) antes que Tj execute W(Q) Se a aresta Ti Tj existe no grafo de precedência ,isto implica que em qualquer escalonador serializável E’ equivalente a E, Ti precisa aparecer antes de Tj.

Exemplos Ti  Tj  Tk  Tn Ti  Tk  Tj  Tn T0 T1 T1 T0 Ti TJ TK Tn Ordens parciais obtidas do grafo de precedência: Ti  Tj  Tk  Tn Ti  Tk  Tj  Tn

Verificando a seriabilidade em visões Considere o escalonador E9 : R2(Q) W3(Q) W2(Q) W4(Q) T2 T3 T4 Não serializável em conflito mas, serializável em visão ao escalonador <T2,T3,T4>. Isto ocorre porque aresta T3  T2 não deveria existir no grafo haja visto que os valores produzidos por T2 e T3 não são usados por outra transação e T4 produz o valor final. As instruções W(Q) produzidas por T2 e T3 são denominadas inúteis. Assim o esquema de grafo de conflito não serve para a verificação da seriabilidade em visão.

Protocolos Baseados em Bloqueio Idéia Básica Quando um transação acessa um item de dados deve antes bloqueá-lo, caso este já esteja bloqueado por outra transação deve esperar até que o item seja liberado Modos de Bloqueio Compartilhado lock-s LS Exclusivo lock-x LX

Regras de Compatibilidade Compartilhado Quando o item desejado não esta bloqueado por nenhuma transação ou esta bloqueado em modo compartilhado. Exclusivo Somente quando o item desejado não esta bloqueado

Transações Bem Formadas Aquelas que sempre bloqueiam o item de dados em modo compartilhado antes de lê-lo e sempre bloqueiam em modo exclusivo antes de gravá-lo Duas transações estão em conflito se elas desejam bloquear o mesmo item de dados em modos incompatíveis.

Exemplos Valores Iniciais: A=100 B=200 T7: Lock-x (B) Read (B) B: B-50 Write (B) Unlock (B) Lock –x (A) Read (A) A: A + 50 Write (A) Unlock (A) T8: Lock-s (A) Read (A) Unlock (A) Lock-s (B) Read (B) Unlock (B) Display (A + B) Valores Iniciais: A=100 B=200 Seja E14: LX7 (B) R7(B) W7 (B) UL7 (B) LS8 (A) R8 (A) UL8 (A) LS8 (B) R8 (B) UL8 (B) LX7 (A) R7 (A) W7 (A) UL7 (A) Inconsistente T8 lê A e B produzindo como resultado 250

Exemplo T10: Lock-s (A) T9: Lock-x (B) Read (A) Read (B) B: B-50 Lock-s (B) Read (B) Display (A+B) Unlock (A) Unlock (B) T9: Lock-x (B) Read (B) B: B-50 Write (B) Lock–x (A) Read (A) A: A + 50 Write (A) Unlock (B) Unlock (A) Seja E15: LX9 (B) R9(B) W9 (B) LS10 (A) R10 (A) LS10 (B) LX9 (A) ....... Impasse

Protocolo de Bloqueio Bifásico (2PL) A execução concorrente de transações é correta se observada as seguintes regras: Transações bem formadas Regras de compatibilidade de bloqueio são obedecidas Cada transação após liberar um bloqueio não solicita um novo bloqueio A condição 3 pode ser expressa dizendo que as transações são Bifasicamente Bloqueadas

Fases do Protocolo Todas as transações devem obedecer as seguintes fases: Primeira Fase – Crescimento Durante a qual obtém seus bloqueios,mas não libera bloqueio algum. Segunda Fase – Retração Na qual os bloqueios são liberados mas nenhum bloqueio pode ser requerido EX: T9 e T10 são 2PL C-Ex: T7 e T8

Seriabilidade e Isolamento O 2PL garante a seriabilidade de transações A propriedade de isolamento só é alcançada caso todos os bloqueios exclusivos sejam até mantidos até a confirmação (commit). Tal como o esquema abaixo: Begin Transaction Aquisição de bloqueios antes de ler ou gravar Commit Libera bloqueios OBS: A vulnerabilidade do 2PL a impasses continua

Tratamento de Impasses Situação Métodos Algoritmo de Prevenção Algoritmo de Detecção e de Tratamento Prevenção Pré- Declaração – bloquear todos os itens Um item fica bloqueado por tempo excessivo Um item muito acessado pode causar postergação indefinida

Detecção de Impasses Grafo Wait-for T5 T6 T8 Sem impasse T7 T5 T6 Com impasse