Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como funciona a suspensão de transações no MySQL?


Isso não significa nada de especial, uma transação suspensa é apenas uma transação que temporariamente não é usada para inserções, atualizações, commit ou rollback, pois uma nova transação deve ser criada devido às propriedades de propagação especificadas, e apenas uma transação pode estar ativa ao mesmo tempo.

Basicamente, existem dois modelos de transação:o aninhado e o plano modelo. No modelo aninhado, se você iniciar uma transação e precisar de outra, a primeira permanece ativa, ou seja, a segunda ficará aninhada dentro de seu pai, e assim por diante. Por outro lado, no modelo flat, a primeira transação será suspensa, ou seja, não a utilizaremos até que a nova seja concluída.

AFAIK o modelo plano é usado quase exclusivamente (incluindo Spring e a especificação EJB também), pois é muito mais fácil de implementar :há apenas uma transação ativa em um determinado momento, então é fácil decidir o que fazer em caso de reversão, digamos, por causa de uma exceção. Mais importante, o banco de dados subjacente deve suportá-lo se você precisar do modelo aninhado, portanto, o modelo plano é apenas o denominador comum nesse caso.