1 As características da transação ACID
1) Atomicidade (Atomicidade) Atomicidade significa que a transação é uma unidade de trabalho inseparável e as operações na transação ocorrem ou não.
2) Consistência (consistência) Em uma transação, a integridade dos dados antes e depois da transação deve ser consistente.
3) Isolamento de várias transações: o isolamento de transações significa que, quando vários usuários acessam o banco de dados simultaneamente, as transações de um usuário não podem ser interferidas pelas transações de outros usuários, e os dados entre várias transações simultâneas devem ser isolados um do outro.
4) Durabilidade Durabilidade refere-se ao fato de que, uma vez que uma transação é confirmada, ela altera os dados no banco de dados permanentemente e, portanto, não deve ter nenhum impacto no banco de dados, mesmo que falhe.
2) Problemas de acesso simultâneo causados pelo isolamento
Se você não considerar o isolamento, existem 3 problemas de acesso simultâneo na transação.
1) Leitura suja (leitura não confirmada): a transação B lê os dados que uma transação ainda não enviou e, como resultado, a transação A reverte ------ A transação B é necessária para ler os dados enviados por uma transação
2) Leitura não repetível (leitura confirmada): uma transação executa atualizações e outras operações, e o conteúdo dos dados lidos duas vezes na transação B é inconsistente, ou seja, o conteúdo dos dados lidos várias vezes é inconsistente ----- O que é necessário é mais do que uma transação Os dados são consistentes durante a segunda leitura --- unpdate
3) leitura fantasma / leitura virtual (leitura repetível): Uma transação é inserida antes e depois da transação. Os dados são excluídos e as transações B são atualizadas repentinamente, para aumentar ou diminuir o número de linhas que afetam o número de linhas ----- requer várias leituras em uma transação. A quantidade de dados obtidos é a mesma inserção de exclusão
3) Nível de isolamento da transação
1) leitura não confirmada: leitura de dados não confirmados: nenhum problema pode ser resolvido
2) leitura confirmada: leia os dados que foram enviados: leituras sujas podem ser resolvidas ---- oracle default
3) leitura repetida: reler leitura: pode resolver leituras sujas e leituras não repetíveis --- padrão mysql
4) serializable: serialization: pode resolver leitura suja, leitura não repetível e leitura virtual --- equivalente à tabela de bloqueio
2. Sete comportamentos de propagação de transações no Spring O comportamento de propagação de
transações, o valor padrão é Propagation.REQUIRED. Você pode especificar manualmente outro comportamento de propagação da transação, da seguinte maneira:
Ag 1) Propagation.REQUIRED
Se uma transação existir no momento, a transação será adicionada e, se nenhuma transação existir, uma nova transação será criada.
) 2) Propagação.
Se houver atualmente uma transação, a transação será adicionada; se não houver transação, a operação continuará de maneira não transacional.
Ag 3) Propagação.MANDATÓRIA
Se houver atualmente uma transação, a transação será adicionada; se não houver uma transação atual, uma exceção será lançada.
) 4) Propagação.REQUIRES_NEW
Recrie uma nova transação, se houver uma transação no momento, atrase a transação atual.
(5) Propagação.NOT_SUPPORTED
Executar de maneira não transacional, se houver uma transação no momento, suspenda a transação atual.
) 6) Propagation.NEVER
Execute de maneira não transacional, se uma transação existir atualmente, uma exceção será lançada.
Ag 7) Propagação.
Caso contrário, crie uma nova transação; se houver, aninhe outras transações na transação atual.