Upload
internet
View
124
Download
1
Embed Size (px)
Citation preview
Diretoria: Vinicius Maran, Querino Junior, Sidnei BarbieriDiretoria: Vinicius Maran, Querino Junior, Sidnei Barbieri
Bloqueios de Atualização Bloqueios de Atualização By Diretoria By Diretoria
Diretoria: Vinicius Maran, Querino Junior, Sidnei BarbieriDiretoria: Vinicius Maran, Querino Junior, Sidnei Barbieri
BloqueiosBloqueios
• O uso do objeto de forma concorrente é obtido através de bloqueios. Cada bloqueio é associado a um único objeto e a um único cliente, tendo em vista que impedem que outras transações atuem.
• Assim, o cliente deve obter o bloqueio apropriado antes de acessar o objeto compartilhado.
Diretoria: Vinicius Maran, Querino Junior, Sidnei BarbieriDiretoria: Vinicius Maran, Querino Junior, Sidnei Barbieri
Tipos de bloqueioTipos de bloqueio
• Bloqueio de leitura (“read lock”), • Bloqueio de escrita (“write lock”), • Bloqueio de atualização (“update lock”),• Intenção de bloquear para leitura (“intention read”), • Intenção de bloquear para escrita (“intention write”)
Diretoria: Vinicius Maran, Querino Junior, Sidnei BarbieriDiretoria: Vinicius Maran, Querino Junior, Sidnei Barbieri
Status de bloqueioStatus de bloqueio
• Todo dado possui um status que pode ser:– Liberado (Unlocked - U)– Com bloqueio compartilhado (Shared lock - S)
Leitura– Com bloqueio exclusivo (eXclusive lock - X)
Leitura+Atualização
Diretoria: Vinicius Maran, Querino Junior, Sidnei BarbieriDiretoria: Vinicius Maran, Querino Junior, Sidnei Barbieri
Bloqueios de Atualização Bloqueios de Atualização (“update lock”)(“update lock”)
• Transações de atualização adquirem locks de leitura e escrita, e os mantém até o final da execução (ou seja, transações seguem lock de duas fases).
• Cada operação de write com sucesso resulta na criação de uma nova versão do dado.
• Cada versão do dado tem uma única timestamp que é o valor de um contador ts_counter, incrementado durante o processo de validação.
Diretoria: Vinicius Maran, Querino Junior, Sidnei BarbieriDiretoria: Vinicius Maran, Querino Junior, Sidnei Barbieri
• Nas transações de leitura apenas são atribuídas timestamps (rótulo da nova versão de dado criada a cada atualização bem sucedida) com o valor corrente de ts_counter antes do início de sua execução, mas quando uma transação de atualização deseja ler um dado, deve obter um lock compartilhado. Então, lê a versão mais recente cria uma nova versão do item com timestamp = ∞.
• Logo: Atualizações que iniciam apenas após a incrementação do ts_counter acessaram valores atualizados e as demais acessarão o valor antes da atualização.
Diretoria: Vinicius Maran, Querino Junior, Sidnei BarbieriDiretoria: Vinicius Maran, Querino Junior, Sidnei Barbieri
O que é...O que é...
• Um bloqueio de atualização concede a uma transação T apenas o privilégio para ler X, não para gravar X.
• Somente o bloqueio de atualização pode ser atualizado mais tarde para um bloqueio de gravação
• Um bloqueio de leitura não pode ser atualizado• Podemos conceder um bloqueio de atualização sobre X
quando já existem bloqueios compartilhados sobre X, mas, uma vez que existe um bloqueio de atualização sobre X, impedimos bloqueios adicionais de qualquer tipo.
Diretoria: Vinicius Maran, Querino Junior, Sidnei BarbieriDiretoria: Vinicius Maran, Querino Junior, Sidnei Barbieri
ExemploExemplo
• T1: ul¹(A); r¹(A); xl¹(A); w¹(A); u¹(A)
• T2: ul²(A); r²(A); xl²(A); w²(A); u²(A)
Diretoria: Vinicius Maran, Querino Junior, Sidnei BarbieriDiretoria: Vinicius Maran, Querino Junior, Sidnei Barbieri
Table Update LockTable Update Lock
SharedShared ExclusiveExclusive
ReadRead TrueTrue FalseFalse
Read/WriteRead/Write FalseFalse FalseFalse