Questões de Concurso
Sobre concorrência em banco de dados em banco de dados
Foram encontradas 135 questões
O problema de concorrência e propriedade ACID que foi violada são, respectivamente,
I. Os bloqueios do tipo binário podem ter dois estados: bloqueado (valor 1) ou desbloqueado (valor 0). Se o valor do bloqueio de X for 1, o item não pode ser acessado por outra operação de banco de dados que necessita daquele item. Se o valor do bloqueio for 0, o item pode ser acessado quando requisitado e o valor do bloqueio é alterado para 1.
II. Nos bloqueios do tipo leitura/gravação existem três operações de bloqueio: read_lock(X), write_lock(X) e unlock(X). Logo, um bloqueio associado ao item X pode ter três estados possíveis bloqueado para leitura, bloqueado para gravação ou desbloqueado.
III. Nos bloqueios do tipo alta vazão existem três modos de bloqueio: leitura, gravação e otimização. Logo, o estado lock(X) para o item X pode ser bloqueado para leitura, bloqueado para gravação, bloqueado para otimização ou desbloqueado.
Está correto o que se afirma em
I. Em um SGBD multiusuário, o mecanismo de controle de concorrência é essencial para assegurar que operações de atualização simultâneas sobre o mesmo dado resultem estados logicamente corretos do banco de dados, sendo essa uma característica das aplicações OLTP.
II. O conceito de transação pressupõe que comandos SQL de inserção, de alteração e de exclusão possam ser executados de forma autônoma, ausente a necessidade de garantia de atomicidade, desde que o isolamento entre transações concorrentes seja preservado.
III. A propriedade de isolamento garante que, mesmo com centenas de transações executadas simultaneamente, cada transação se comporte como se estivesse sendo executada sozinha, o que diferencia um SGBD de um sistema tradicional de processamento de arquivos.
IV. A atomicidade assegura que todas as operações de manipulação de dados realizadas por uma transação, como comandos SQL de atualização em tabelas, sejam efetivadas integralmente ou totalmente desfeitas, caso ocorra alguma falha durante sua execução.
Está CORRETO o que se afirma em
Qual é o resultado esperado para a segunda execução da consulta em T1?
Assinale a opção que descreve corretamente a propriedade da Isolamento (Isolation).
Sobre tais mecanismos, assinale a alternativa INCORRETA.
O nível que permite leitura de dados não confirmados de outras transações, potencialmente causando dirty reads, é:
I. Leitura suja fica fora do Read Committed, pois cada consulta enxerga apenas linhas efetivadas.
II. Phantom rows podem ocorrer em Repeatable Read dependendo de implementação, exigindo bloqueios adicionais para consistência por faixas.
III. Serializable evita interferências lógicas por equivalência a execução sequencial, com custo maior em conflitos.
IV. Snapshot isolation elimina phantoms por versão, ainda que conflitos por gravação sigam relevantes.
V. Read Uncommitted aceita escrita perdida com naturalidade e prioriza consistência forte em troca de atraso mínimo.
Estão corretas as afirmativas:
Estes são os tipos de bloqueios segundo Elmasri e Navathe (2011):
I. Bloqueio gradual;
II. Bloqueio conservador/exclusivo;
III. Bloqueio de interação.
Fonte: ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de Banco de Dados. 6. ed. São Paulo: Pearson, 2011.
Está CORRETO o que se afirma em:
• 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