Sobes.tech
Middle

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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).