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.