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 SQL:1992 StandardTx1 e Tx2:
Dirty read: isso ocorre quando oTx1modifica um item e oTx2lê esse item antes de oTx1ter confirmado a alteração. Portanto, se oTx1nunca conseguir confirmar a alteração, ou revertê-la, oTx2lerá um valor que nunca chegou ao banco de dados.Non-repeatable read: isso acontece quando oTx1lê um item, oTx2modifica ou exclui esse item e confirma a alteração e oTx1tenta ler o item novamente. OTx1agora lê um valor diferente do anterior ou descobre que o item não existe mais.Phantom read: isso acontece quando oTx1lê um conjunto de itens que satisfazem um critério de pesquisa e, depois, oTx2adiciona um novo item que atende ao critério de pesquisa, e oTx1repete a pesquisa. OTx1agora 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:1992 standard 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 — multiversion concurrency control) permite outro tipo de isolamento, ou seja, o isolamento SNAPSHOT . 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.