Comparação dos quatro níveis de isolamento do MySQL

Comparação dos quatro níveis de isolamento do MySQL

pré-declaração

Recentemente, estou analisando as perguntas comuns de entrevista do MySQL, então vou registrá-las brevemente.

Comparação de quatro níveis de isolamento

Principalmente para garantir o isolamento no ACID, a consistência é o objetivo.Atomicidade, isolamento e persistência são todos os meios.

nível de isolamento Leitura Suja Leitura Fantasma Leitura não repetível (leitura não repetível)
Ler não confirmado pode acontecer pode acontecer pode acontecer
Ler confirmado não vai acontecer pode acontecer pode acontecer
Leitura repetível não vai acontecer pode acontecer não vai acontecer
serializável não vai acontecer não vai acontecer não vai acontecer

Nota: Pode ocorrer indica que o problema pode ocorrer neste nível de isolamento. Não ocorre significa que o problema não ocorre neste nível de isolamento.

Deve-se observar que diferentes níveis de isolamento farão diferentes compensações entre desempenho de simultaneidade e consistência de dados. À medida que o nível de isolamento aumenta, o desempenho de simultaneidade do banco de dados geralmente diminui, mas a consistência dos dados fica mais garantida. A escolha de um nível de isolamento apropriado requer uma compensação com base nas necessidades do aplicativo.

Nível de leitura não confirmado (READ UNCOMMITTED) , a operação de leitura na transação pode ver a modificação da transação não confirmada. Portanto, leituras sujas podem ocorrer. Ao mesmo tempo, como a modificação de outras transações também pode afetar os dados, tanto a leitura fantasma quanto a leitura não repetível podem ocorrer.

Nível de leitura confirmada (READ COMMITTED) , a operação de leitura na transação só pode ver a modificação da transação confirmada. Portanto, leituras sujas não podem ocorrer. No entanto, ainda podem ocorrer leituras fantasmas e não repetíveis.

Nível de leitura repetitiva (REPEATABLE READ) , o nível de isolamento padrão do MySQL. Quando uma operação de leitura em uma transação lê a mesma linha de dados várias vezes na mesma transação, o resultado é sempre consistente, a menos que a própria transação seja modificada. Portanto, leituras não repetíveis não podem ocorrer. No entanto, leituras fantasmas ainda podem ocorrer.

No nível SERIALIZABLE , a ordem de serialização das transações garante o isolamento das transações. Portanto, leituras sujas, leituras fantasmas e leituras não repetíveis são impossíveis. No entanto, há uma sobrecarga de desempenho significativa nesse nível porque uma transação geralmente precisa aguardar a conclusão da transação anterior antes de prosseguir.

três perguntas

  • Leitura Suja: Uma transação lê dados não confirmados de outra transação. Isso pode resultar na leitura de dados inválidos ou inconsistentes.

  • Phantom Read: Quando uma transação lê um intervalo de dados, outra transação insere novos dados no intervalo, fazendo com que a primeira transação encontre novos dados ao reler o intervalo de dados.

  • Leitura não repetível (Non-repeatable Read): Depois que uma transação lê um determinado dado, quando ela lê os dados novamente, descobre que os dados foram modificados ou excluídos por outras transações.

Acho que você gosta

Origin blog.csdn.net/xiaozhengN/article/details/132179618
Recomendado
Clasificación