Pode explicar o que é uma leitura fantasma no contexto da gestão de transações?
sobes.tech IA
Resposta da IA
A leitura fantasma é um fenómeno na gestão de transações, onde numa mesma transação, uma consulta repetida à base de dados devolve conjuntos diferentes de linhas devido a alterações feitas por outras transações.
Por exemplo, a transação T1 lê um conjunto de linhas que satisfazem uma condição (por exemplo, todos os pedidos de hoje). Entre duas leituras, outro processo (transação T2) adiciona novas linhas que também satisfazem a condição. Na leitura seguinte, aparecem linhas "fantasma" — novos registos que não estavam na primeira leitura.
Isto acontece devido à ausência de bloqueios ao nível de intervalos ou devido a um nível de isolamento baixo das transações (por exemplo, READ COMMITTED). Para evitar leituras fantasma, usam-se níveis de isolamento mais rigorosos, como SERIALIZABLE, ou mecanismos de bloqueio de intervalos.