Junior — Middle
Podes listar os diferentes níveis de isolamento de transações em bancos de dados e explicar a sua diferença?
sobes.tech IA
Resposta da IA
Nos bancos de dados existem vários níveis padrão de isolamento de transações, que determinam como e quando as alterações feitas por uma transação se tornam visíveis para outras transações. Os principais níveis de isolamento:
-
Read Uncommitted (Leitura não confirmada)
- Uma transação pode ver alterações de outras transações, mesmo que ainda não tenham sido confirmadas.
- Possíveis "leituras sujas" (dirty reads).
-
Read Committed (Leitura confirmada)
- A transação vê apenas as alterações que foram confirmadas.
- Elimina leituras sujas, mas podem ocorrer leituras não repetíveis.
-
Repeatable Read (Leitura repetível)
- Garante que, se os dados foram lidos em uma transação, eles não mudarão em uma leitura subsequente.
- Elimina leituras não repetíveis, mas podem ocorrer leituras fantasmas.
-
Serializable (Serializável)
- O nível de isolamento mais rigoroso.
- As transações são executadas como se fossem feitas sequencialmente, uma após a outra.
- Elimina leituras fantasmas e garante isolamento completo.
A escolha do nível de isolamento afeta o desempenho e a integridade dos dados: níveis mais rigorosos garantem maior integridade, mas podem reduzir o paralelismo e aumentar bloqueios.