Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment fonctionne la suspension des transactions dans MySQL ?

Cela ne signifie rien de spécial, une transaction suspendue est juste une transaction qui n'est temporairement pas utilisée pour les insertions, mises à jour, commit ou rollback, car une nouvelle transaction doit être créée en raison des propriétés de propagation spécifiées, et une seule transaction peut être active à la fois.

Fondamentalement, il existe deux modèles de transaction :le modèle imbriqué et plat maquette. Dans le modèle imbriqué, si vous démarrez une transaction et que vous en avez besoin d'une autre, la première reste active, c'est-à-dire que la seconde sera imbriquée dans son parent, et ainsi de suite. En revanche, dans le modèle plat, la première transaction sera suspendue, c'est-à-dire que nous ne l'utiliserons pas tant que la nouvelle ne sera pas terminée.

AFAIK, le modèle plat est utilisé presque exclusivement (y compris Spring et la spécification EJB également), car il est beaucoup plus facile à implémenter  :il n'y a qu'une seule transaction active à un moment donné, il est donc facile de décider quoi faire en cas de retour en arrière, par exemple, à cause d'une exception. Plus important encore, la base de données sous-jacente doit le prendre en charge si vous avez besoin du modèle imbriqué, de sorte que le modèle plat n'est que le dénominateur commun dans ce cas.