No SGBD Microsoft SQL Server 2005, foi introduzido o nível ...

Próximas questões
Com base no mesmo assunto
Q630832 Banco de Dados
No SGBD Microsoft SQL Server 2005, foi introduzido o nível de isolamento SNAPSHOT. Com relação a esse nível de isolamento assinale a afirmativa CORRETA:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: D - Utiliza o banco de dados tempdb para armazenar mudanças.

Vamos discorrer sobre o tema de níveis de isolamento em SGBDs, e especificamente sobre o nível SNAPSHOT no Microsoft SQL Server. Os níveis de isolamento em um SGBD definem como as transações interagem entre si e como o banco de dados lida com o problema de concorrência, ou seja, o acesso simultâneo aos dados por múltiplas transações. Esse controle é necessário para manter a integridade dos dados.

O nível de isolamento SNAPSHOT, introduzido no SQL Server 2005, é projetado para permitir que transações operem de forma que cada transação veja uma "fotografia" consistente do banco de dados no momento em que a transação foi iniciada. Isso significa que se outras transações alterarem os dados após essa "fotografia", tais alterações não afetarão a transação que está operando no nível SNAPSHOT.

Agora, vamos justificar por que a alternativa D é a correta:

No nível SNAPSHOT, o SQL Server utiliza uma área especial chamada tempdb para armazenar versões dos dados que estão sendo modificados durante as transações. Isso permite criar esse efeito de "fotografia" do banco de dados. Quando uma transação começa, ela pode continuar a ver o estado do banco de dados como ele estava no início da transação, independente das modificações que outras transações estão fazendo. Isso é conseguido com o uso dessas versões armazenadas no tempdb, um recurso que otimiza o desempenho do banco de dados ao mesmo tempo em que evita conflitos entre transações.

Importante salientar que as outras opções apresentam informações incorretas:

  • A alternativa A está incorreta pois o nível SERIALIZABLE é o mais restritivo dentre os níveis de isolamento, garantindo que as transações sejam processadas de uma maneira que seria equivalente a serem executadas sequencialmente.
  • A alternativa B também está incorreta, pois SNAPSHOT não é sinônimo de READ UNCOMMITTED, que é um nível de isolamento que permite a leitura de dados não comprometidos, ou seja, dados que podem estar em meio a uma transação e que ainda não foram confirmados (committed).
  • A alternativa C está incorreta porque o nível SNAPSHOT não cria bloqueios compartilhados nos registros consultados; ao invés disso, ele funciona através de row versioning para evitar bloqueios e deadlocks.

Entender os níveis de isolamento e como eles impactam a consistência dos dados e o desempenho das transações é fundamental para um profissional que trabalha com bancos de dados, especialmente ao preparar-se para um concurso público na área de TI.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Quando o isolamento de instantâneo estiver ativado, as versões de linha atualizadas para cada transação serão mantidas em tempdb. Um número de sequência exclusivo de transação identifica cada transação, e esses números exclusivos são gravados para cada versão de linha. A transação funciona com as versões de linha mais recentes que têm um número de sequência antes do número de sequência da transação. Versões de linha mais recentes criadas após a transação ter iniciado são ignoradas pela transação.

O termo “instantâneo” reflete o fato de que todas as consultas na transação enxergam a mesma versão, ou o instantâneo, do banco de dados, com base no estado do banco de dados nesse ponto no tempo quando a transação começa. Nenhum bloqueio é adquirido nas linhas de dados subjacentes ou páginas de dados em uma transação de instantâneo, o que permite que outras transações sejam executadas sem serem bloqueadas por uma transação anterior não concluída. As transações que modificam dados não bloqueiam as transações que leem dados, e as transações que leem dados não bloqueiam as transações que gravam dados, como normalmente fariam no nível de isolamento READ COMMITTED padrão no SQL Server. Este comportamento de não bloqueio também reduz significativamente a probabilidade de deadlocks para transações complexas.

 

Fonte: https://msdn.microsoft.com/pt-br/library/tcbchxcb(v=vs.110).aspx

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo