Questões de Concorrência em Banco de Dados (Banco de Dados)

Limpar Busca

Segundo o protocolo do bloqueio em duas fases, utilizado em bancos de dados relacionais, há uma dessas fases em que uma transação pode obter, mas não liberar bloqueios.



Tal fase recebe, especificamente, a denominação de fase de

  • A composição.
  • B imposição.
  • C encolhimento.
  • D transformação.
  • E crescimento.

No modelo ACID de transações em bancos de dados relacionais, o princípio de isolamento garante que transações concorrentes não interfiram de forma incorreta umas nas outras. Assinale a opção em que é indicado o mecanismo que implementa o princípio de isolamento por meio do uso de bloqueios que só são liberados depois da conclusão da fase de crescimento da transação.

  • A snapshot isolation
  • B timestamp ordering
  • C 2PL (two-phase locking)
  • D controle de concorrência otimista
  • E MVCC (multiversion concurrency control)

Em uma aplicação bancária que utiliza um sistema de banco de dados relacional compatível com o padrão ANSI SQL, um desenvolvedor implementa a seguinte lógica para garantir a consistência ao realizar transferências entre contas:



BEGIN;


SELECT saldo FROM contas WHERE id = 101 FOR UPDATE;


UPDATE contas SET saldo = saldo - 500 WHERE id = 101;


SELECT saldo FROM contas WHERE id = 202 FOR UPDATE;


UPDATE contas SET saldo = saldo + 500 WHERE id = 202;


COMMIT;



Durante testes de carga, outra transação concorrente tenta acessar a conta de id 101 logo após o início da transação acima. Com base nesse contexto, avalie as afirmações a seguir:


I. A cláusula FOR UPDATE utilizada no SELECT bloqueia a linha lida até o fim da transação, impedindo que outras transações atualizem ou façam SELECT FOR UPDATE na mesma linha enquanto o bloqueio estiver ativo.


II. O uso de FOR UPDATE é eficaz para evitar condições de corrida (race conditions) ao modificar linhas críticas em um modelo de leitura-modificação-escrita.


III. A cláusula FOR UPDATE garante isolamento no nível SERIALIZABLE por si só, impedindo leitura fantasma e garantindo que nenhuma transação concorrente acesse qualquer dado relacionado.



É correto o que se afirma em:

  • A I, II e III.
  • B I e III, apenas.
  • C I e II, apenas.
  • D II, apenas.
  • E III, apenas.

Transações ACID em bancos de dados relacionais garantem propriedades fundamentais para manter a integridade dos dados em operações concorrentes. Um dos parâmetros mais importantes é o nível de isolamento (Isolation Level), que define como e quando os efeitos das alterações realizadas por uma transação são visíveis para outras. Considere uma aplicação bancária de grande porte, utilizando um sistema de gerenciamento de banco de dados (SGBD) com suporte ao nível de isolamento SERIALIZABLE. Nessa configuração, assinale a alternativa que descreve corretamente o comportamento pela escolha do nível de isolamento SERIALIZABLE:

  • A Transações podem visualizar dados modificados por outras transações antes do commit (dirty reads).
  • B Transações não utilizam bloqueios para controlar o acesso concorrente.
  • C A atomicidade da transação é garantida, não a consistência.
  • D Nenhuma transação concorrente pode causar leituras fantasmas (phantom reads).
  • E Esse nível prioriza o desempenho ao invés da consistência dos dados.

Em um sistema de gerenciamento de banco de dados relacional que implementa os níveis de isolamento definidos pelo padrão ANSI SQL, cada nível oferece diferentes garantias contra anomalias de concorrência, como:



• Leitura suja (dirty read): leitura de dados ainda não confirmados.


• Leitura não repetível (non-repeatable read): dados lidos são alterados por outra transação entre duas leituras.


• Leitura fantasma (phantom read): novas linhas são inseridas por outras transações entre duas leituras.



Com base nesse contexto, avalie as afirmações a seguir:


I. O nível Read Uncommitted permite todas as três anomalias: leituras sujas, leituras não repetíveis e leituras fantasmas.


II. O nível Repeatable Read previne leituras sujas e leituras não repetíveis, mas não previne leituras fantasmas.


III. O nível Serializable evita todos os três fenômenos de concorrência, oferecendo o mais alto grau de isolamento conforme o padrão ANSI SQL.



É correto o que se afirma

  • A I, II e III.
  • B I e II, apenas.
  • C II e III, apenas.
  • D III, apenas.
  • E I, apenas.