Definição de níveis de isolamento - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Definição de níveis de isolamento

O "I" em ACID significa isolamento. O grau de isolamento de uma transação determina quantas ou quão poucas outras transações simultâneas podem afetar os dados nos quais ela opera.

O SQLpadrão:1992 criou um vocabulário para descrever os níveis de isolamento. Ele define três tipos de interações (que ele chama de fenômenos) que podem ocorrer entre duas transações simultâneas, Tx1 e Tx2:

  • Dirty read: isso ocorre quando o Tx1 modifica um item e o Tx2 lê esse item antes de o Tx1 ter confirmado a alteração. Portanto, se o Tx1 nunca conseguir confirmar a alteração, ou revertê-la, o Tx2 lerá um valor que nunca chegou ao banco de dados.

  • Non-repeatable read: isso acontece quando o Tx1 lê um item, o Tx2 modifica ou exclui esse item e confirma a alteração e o Tx1 tenta ler o item novamente. O Tx1 agora lê um valor diferente do anterior ou descobre que o item não existe mais.

  • Phantom read: isso acontece quando o Tx1 lê um conjunto de itens que satisfazem um critério de pesquisa e, depois, o Tx2 adiciona um novo item que atende ao critério de pesquisa, e o Tx1 repete a pesquisa. O Tx1 agora obtém um conjunto de itens diferente do anterior.

Cada um desses três tipos de interação pode provocar inconsistências nos dados resultantes em um banco de dados.

O SQL padrão:1992 definiu quatro níveis de isolamento que têm garantias diferentes em termos dos três tipos de interação e das inconsistências que eles podem produzir. Em todos os quatro níveis, uma transação pode ser garantida para ser executada completamente ou não:

  • READ UNCOMMITTED: permite todos os três tipos de interação (ou seja, leituras sujas, leituras não repetíveis e leituras fantasmas).

  • READ COMMITTED: leituras sujas não são possíveis, mas leituras não repetíveis e fantasmas são.

  • REPEATABLE READ: nem leituras sujas nem leituras não repetíveis são possíveis, mas leituras fantasmas ainda são.

  • SERIALIZABLE: nenhum dos três tipos de fenômeno de interação pode ocorrer.

O controle de simultaneidade multiversão (MVCC) permite outro tipo de isolamento, a saber SNAPSHOT, isolamento. Isso garante que uma transação opere em um snapshot de dados como ele se encontra quando a transação começa e que nenhuma outra transação possa alterar esse snapshot.