SóProvas


ID
17977
Banca
CESGRANRIO
Órgão
BNDES
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

No âmbito de banco de dados, que grafo de precedência representa um escalonamento que NÃO é serializável quanto ao conflito?

Alternativas
Comentários
  • Escalonamentos seriais
    • Um escalonamento de duas transações T1 e T2 é serial se todas as ações de T1 são
    executadas antes de todas as ações de T2 ou se todas as ações de T2 são executadas
    antes de todas as ações de T1
    • Todo escalonamento serial é válido
    Exemplo:
    T1: transferência de 100 reais da conta 0001 para a conta 0002
    EXEC SQL UPDATE conta SET saldo = saldo - 100 WHERE nrconta = 0001;
    EXEC SQL UPDATE conta SET saldo = saldo + 100 WHERE nrconta = 0002;
    EXEC SQL COMMIT;
    T2: transferência de 10% do saldo da conta 0001 para a conta 0002
    EXEC SQL SELECT saldo FROM conta WHERE nrconta = 0001 INTO :valor;
    valor := 0.1*valor;
    EXEC SQL UPDATE conta SET saldo = saldo - valor WHERE nrconta = 0001;
    EXEC SQL UPDATE conta SET saldo = saldo + valor WHERE nrconta = 0002;
    EXEC SQL COMMIT;
    Serializabilidade de conflito
    • Um escalonamento é serializável de conflito se puder ser transformado em um
    escalonamento serial através de trocas de posições de operações que nunca
    provoquem conflito (alteração no resultado do escalonamento)
    • As seguintes trocas de posição nunca provocam conflito:
    – Entre duas leituras de transações diferentes
    – Entre duas operações de transações diferentes sobre itens de dados diferentes
    • Todo escalonamento serializável de conflito é serializável (a recíproca não é
    verdadeira)

  • A opção c apresenta um grafo de precedência que não é serializável quanto ao conflito, pois, as operações T1 e T2 podem ocorrer na sequência de T1 para T2 e de T2 para T1, o que inviabiliza a serialização em caso de conflito.
  • Só ver o grafo que possui ciclo, este não é um escalonamento serializável.