Quais são os níveis de isolamento de transações existentes no SQL?
sobes.tech IA
Resposta da IA
Os níveis de isolamento de transações em SQL determinam o grau de proteção dos dados contra transações paralelas. Eles influenciam problemas possíveis: leitura suja, leitura não repetível e leitura fantasma.
O padrão SQL define quatro níveis de isolamento:
-
Read Uncommitted: O nível mais baixo. A transação pode ler dados não confirmados (sujos) de outras transações.
- Permite: leitura suja, leitura não repetível, leitura fantasma.
-
Read Committed: A transação só pode ler dados confirmados. Não há problema de leitura suja.
- Permite: leitura não repetível, leitura fantasma.
-
Repeatable Read: A transação garante ver os mesmos dados em leituras repetidas. Os dados lidos dentro da transação não podem ser modificados ou excluídos por outra transação até sua finalização.
- Permite: leitura fantasma.
-
Serializable: O nível mais alto. As transações são executadas sequencialmente, como se trabalhassem uma após a outra. Prevê completamente todos os problemas mencionados.
Tabela resumo de problemas e níveis de isolamento:
| Problema | Read Uncommitted | Read Committed | Repeatable Read | Serializable |
|---|---|---|---|---|
| Leitura suja | Possível | Impossível | Impossível | Impossível |
| Leitura não repetível | Possível | Possível | Impossível | Impossível |
| Leitura fantasma | Possível | Possível | Possível | Impossível |
A escolha do nível de isolamento depende dos requisitos da aplicação em relação à consistência dos dados e desempenho. Níveis mais altos garantem maior integridade, mas podem reduzir o desempenho devido ao aumento de bloqueios. O nível padrão geralmente depende do sistema de gerenciamento de banco de dados (por exemplo, no PostgreSQL e Oracle por padrão é Read Committed, no MySQL é Repeatable Read).