Questões de Concurso
Comentadas sobre concorrência em banco de dados em banco de dados
Foram encontradas 119 questões
• Uma transação T1 adquire uma trava compartilhada (shared lock) na linha 1.
• Uma transação T2 adquire uma trava compartilhada na linha 2.
• A transação T1 tenta adquirir uma trava exclusiva (exclusive lock) na linha 2, ficando bloqueada até que a transação T2 libere a trava na linha 2.
• A transação T2 tenta adquirir uma trava exclusiva na linha 1, ficando bloqueada esperando que a transação T1 libere a trava na linha 1.
Sobre esse contexto, analise as assertivas a seguir:
I. O sistema é capaz de detectar essa situação automaticamente, e pode resolvê-la escolhendo uma das transações para terminar com um erro.
II. Situações semelhantes podem acontecer entre mais do que duas transações ao mesmo tempo.
III. Se todas as transações acessarem objetos na mesma ordem, situações semelhantes são menos prováveis de acontecer.
Quais estão corretas?
O gestor de TI detectou um problema: em determinados momentos, o sistema calcula valores com base em registros de frequência que são modificados por outra transação ainda em andamento, resultando em inconsistência nos valores pagos.
Para evitar esse problema, a equipe propõe ajustar o nível de isolamento da transação utilizada durante o cálculo da folha, de forma que os dados lidos não possam ser modificados ou inseridos por outras transações até que a atual seja concluída.
Com base nesse cenário, o nível de isolamento mais apropriado para evitar leituras inconsistentes causadas por alterações concorrentes é:
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:
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:
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
Em um sistema bancário, um cliente realiza uma transferência de R$ 500,00 da conta A para a conta B. No sistema, essa operação envolve duas instruções em Linguagem SQL: a primeira realiza o débito na conta A, enquanto a segunda realiza o crédito na conta B. Ambas as instruções são executadas dentro de uma transação. Nesse contexto, considere as sentenças a seguir sobre os níveis de isolamentos nesse processo de transferência:
I- Caso o nível de isolamento da transação de transferência seja repeatable read, o saldo da conta B irá variar entre duas consultas na mesma transação.
II- Caso o nível de isolamento da transação de transferência seja serializable, a execução sequencial completa das transações será simulada, evitando todos os tipos de anomalias, incluindo phantom reads.
III- Caso o nível de isolamento da transação de transferência seja read committed, ele garante que uma transação sempre verá a mesma versão dos dados durante toda a sua execução, impedindo non-repeatable reads.
IV- Caso o nível de isolamento da transação de transferência seja read uncommitted, uma transação pode ler o saldo de uma conta mesmo que a outra transação ainda não tenha finalizado o commit, possibilitando dirty reads.
Assinale a alternativa com as sentenças CORRETAS sobre o cenário apresentado.
O nível de isolamento mais rigoroso é o
A definição “ Se o timestamp TS(Ti) < TS(Tj), então (a transação Ti é mais antiga que a transação Tj), então Ti tem permissão para esperar; caso contrário (Ti mais novo que Tj) aborta Tj e o reinicia mais tarde com o mesmo rótulo de tempo TS “ descreve a estratégia de prevenção de deadlock denominada
Acerca de aspectos relativos a bancos de dados, julgue o próximo item.
Uma das características dos sistemas gerenciadores de banco de dados é o acesso concorrente, que é garantido através de índices e visões específicas.
Assinale a alternativa que apresenta a descrição dessa característica.