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 criouTx1
e Tx2
:
Dirty read
: isso ocorre quando oTx1
modifica um item e oTx2
lê esse item antes de oTx1
ter confirmado a alteração. Portanto, se oTx1
nunca conseguir confirmar a alteração, ou revertê-la, oTx2
lerá um valor que nunca chegou ao banco de dados.Non-repeatable read
: isso acontece quando oTx1
lê um item, oTx2
modifica ou exclui esse item e confirma a alteração e oTx1
tenta ler o item novamente. OTx1
agora lê um valor diferente do anterior ou descobre que o item não existe mais.Phantom read
: isso acontece quando oTx1
lê um conjunto de itens que satisfazem um critério de pesquisa e, depois, oTx2
adiciona um novo item que atende ao critério de pesquisa, e oTx1
repete a pesquisa. OTx1
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.