Sobes.tech
Junior — Middle

Quais aspetos podem ser regulados no comportamento das transações ao usar níveis de isolamento?

sobes.tech IA

Resposta da IA

Os níveis de isolamento de transações determinam como e quando as alterações feitas por uma transação se tornam visíveis para outras. Os principais aspetos que podem regular o comportamento das transações ao usar níveis de isolamento:

  • Fenómenos de isolamento:

    • Leituras sujas (Dirty Reads) — leitura de dados que foram modificados mas não confirmados em outra transação.
    • Leituras não repetíveis (Non-repeatable Reads) — quando os dados lidos numa transação mudam por outra transação antes de esta terminar.
    • Leituras fantasmas (Phantom Reads) — aparecimento de novas linhas que satisfazem a condição da consulta durante uma transação.
  • Níveis de isolamento:

    • Read Uncommitted — permite todos os fenómenos, máxima concorrência, mínimo isolamento.
    • Read Committed — proíbe leituras sujas, mas permite leituras não repetíveis e fantasmas.
    • Repeatable Read — proíbe leituras sujas e não repetíveis, mas permite leituras fantasmas.
    • Serializable — máximo isolamento, proíbe todos os fenómenos, as transações são executadas de forma sequencial.
  • Configuração do comportamento:

    • Escolha do nível de isolamento consoante os requisitos de consistência e desempenho.
    • Uso de bloqueios e tempos limite para gerir o acesso concorrente.
    • Em C# ao trabalhar com bases de dados via ADO.NET ou ORM, pode-se definir o nível de isolamento através das propriedades da transação, por exemplo:
using (var transaction = connection.BeginTransaction(IsolationLevel.Serializable))
{
    // operações na transação
    transaction.Commit();
}

Assim, a regulação do comportamento das transações resume-se à escolha do nível de isolamento adequado e à gestão de bloqueios para equilibrar integridade dos dados e desempenho.