O padrão SQL define diversos níveis de isolamento de transaç...

Próximas questões
Com base no mesmo assunto
Q47392 Banco de Dados
O padrão SQL define diversos níveis de isolamento de transações. Dentre os níveis permitidos, encontra-se o nível de Leitura Confirmada (read committed) que é implementado atualmente por vários Sistemas Gerenciadores de Bancos de Dados (SGBDs). Em um SGBD operando em tal nível de isolamento, tentam-se executar duas transações (T1 e T2). Observe na tabela abaixo o registro do escalonamento previsto para os comandos dessas transações, em que A representa um determinado registro.

Imagem 004.jpg

Considerando os dados registrados, conclui-se que
Alternativas

Comentários

Veja os comentários dos nossos alunos

Letra B

Observem que no 1º comando READ de T1 resultará no valor inicial de A, que consideraremos X. Após isso T1 executa comandos diversos que fogem do enunciado. Nesse momento T2 Adiciona 30 ao valor de A e envia um COMMIT, a partir disso temos que A=X+30. 
Na sequência T1 volta a executar um READ que retornará o valor de A editado por T2, ou seja X+30.

Em síntese 
1º READ de T1: A=X
2º READ de T1: A=X+30
Enviado por Diogo Duailibe em Mon, Jan 4, 2010 at 9:33 PM para a lista TIMastersNo caso da letra D, ele está afirmando que o Rollback dado no final datransação T1 traz o valor de A para o que era no início da execução dastransações, o que não é verdade, pois graças a propriedade de Isolamento, oscomandos commit e rollback só afetam as operações de atualização (write) datransação em que estão contidos.Como t2 executou o comando commit, o SGBD repassou o comando de atualização[write(A)] para o banco de dados, modificando o valor do registro A paraA+30Quando t1 executar o rollback, ele apenas anulará os seus comandos deatualização [write(A)]. Porém o valor do registro A continuará sendo A+30.Se t2 não tivesse executado o commit, a letra D seria a resposta corretapara a questão, pois o valor do registro A (=A+30) não seria atualizado nobanco de dados.

Pessoal, essa questão é fácil de matar desde se preste atenção no enuciado. Ele fala que o nível de isolamento escolhido foi o READ COMMITED, ou seja permite que os dados sejam modificados por outra transação. A única questão que fala sobre isso é a letra B.

 

* SERIALIZABLE: Só permite que escalas serializáveis sejam executadas. Bloqueia os dados até o final da transação, e impede a inserção de novas tuplas nas tabelas em uso. É o modo mais restritivo, ou seja, o que resulta em menor concorrência.

* REPEATABLE READ: Bloqueia os dados até o final da transação, garantido que os valores dos dados acessados não serão modificados por outras transações, mas permite a inserção de tuplas na tabela, podendo originar "tuplas fantasma".

* READ COMMITED: Bloqueios são usados durante o acesso ao dado. Com isso, os valores dos dados acessados podem ser modificados por outras transações, e podem surgir "tuplas fantasma". É a opção default.

* READ UNCOMMITED: Não usa bloqueio, podendo resultar em leitura de dados sendo escritos (dirty read), valores dos dados acessados podem mudar durante a transação, e tuplas podem ser inseridas ou removidas durante a transação. É o modo menos restritivo, que resulta em maior concorrência, mas que deve ser usado somente quando não se tem nenhum compromisso com a consistência do resultado.

De outra maneira, uma comparação entre os níveis de isolamento e os possíveis problemas:




Fonte:
http://sanjsuya.wordpress.com/2012/04/26/transaction-isolation/

Clique para visualizar este comentário

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