Sobes.tech
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:

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