SóProvas


ID
884983
Banca
CESPE / CEBRASPE
Órgão
ANP
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Acerca do conceito de processamento de transações em um banco de dados, julgue os itens a seguir.

Se uma transação for executada de maneira serializável, poderá ocorrer de uma transação ler novamente dados lidos anteriormente e descobrir que eles foram alterados por outra transação.

Alternativas
Comentários
  • De acordo com Navathe "Um plano S com n transações é serializável se ele for equivalente a algum plano serial com as mesmas n transações." "Um escalonamento é serial se, para todas as transações T participantes do escalonamento, todas as operações de T forem executadas consecutivamente" ,ou seja, no escalonamento serial como as transações são executadas de forma consecutiva não há possibilidade de uma transação alterar os dados enquanto uma transação está sendo executada, por ser a execução delas sequencial, e de acordo com Navathe, no escalonamento serializável, apesar de a execução ser intercalada, ele tem que ser equivalente ao serial. Portanto NÃO poderá ocorrer de uma transação ler os dados duas vezes e na segunda vez ele está alterado.

  • Complementando o assunto:
    Há 4 níveis de isolamento entre transações:
    1- Read uncommited -> permite a leitura de um dado que foi escrito por outra transação sem que a transação que o escreveu tenha sido commitada. Nesse caso, pode ocorrer uma "leitura suja", que entendo ser o caso tratado pela questão;
    2- Read commited -> somente permite a leitura de um dado gravado por outra transação, se esta já tiver sido commitada. Não ocorre a "leitura suja", mas pode ocorrer a "leitura repetível";
    3- Nonrepeatable read -> evita os dois casos anteriores, porém, ainda podem ocorrer "fantasmas";
    4- Serialazable -> corrige todos os problemas citados anteriormente, pois, como dito pelo colega acima, é um plano de execução que é correspondente a um plano de execução serial. É dito um "plano correto".
  • Um plano é chamado serial quando as operações de cada transação envolvida são executadas sem intercalação. 

    Um plano é chamado não serial quando as operações de cada transação envolvida são executadas de forma intercalada.

  • Pessoal, 

         De acordo com o artigo da Microsoft - Níveis de Isolamento no mecanismo de banco de dados - disponível em https://technet.microsoft.com/pt-br/library/ms189122%28v=sql.105%29.aspx :

        "O nível de isolamento mais alto, serializável, garante que uma transação recuperará exatamente os mesmos dados toda vez que repetir uma operação de leitura, mas faz isto executando um nível de bloqueio que provavelmente causará impacto em outros usuários em sistemas multiusuários. O mais baixo nível de isolamento, leitura de dados não confirmados, pode recuperar dados que foram modificados mas não foram confirmados por outras transações."

    ...

    "O padrão ISO define os seguintes níveis de isolamento, todos têm suporte pelo Mecanismo de banco de dados do SQL Server:

    • Leitura não confirmada (o mais baixo nível onde transações só estão isoladas o bastante para assegurar que dados corruptos fisicamente não sejam lidos)

    • Leitura confirmada (Mecanismo de Banco de Dados nível padrão)

    • Leitura repetida

    • Serializável (o nível mais alto, onde as transações estão completamente isoladas uma da outra)"


        Acho que nessa questão o examinador queria que o candidato soubesse que serializável é o nível de isolamento mais restritivo. No link abaixo tem uma tabelinha bem interessante dos níveis de isolamento: http://www.itnerante.com.br/group/bancodedados/forum/topics/n-veis-de-isolamento-transa-o-bd?xg_source=activity

    Abs,

    Bons estudos!

  • A definição de schedule serializável é a seguinte: um schedule S de n transações é serializável se for equivalente a algum shedule serial das mesmas n transações = estado final do banco de dados de algum escalonamento serial das mesmas n transações.