Mysql
 sql >> Database >  >> RDS >> Mysql

Come funziona la sospensione delle transazioni in MySQL?

Non significa niente di speciale, una transazione sospesa è solo una transazione che temporaneamente non viene utilizzata per inserimenti, aggiornamenti, commit o rollback, perché è necessario creare una nuova transazione a causa delle proprietà di propagazione specificate e può essere attiva solo una transazione alla volta.

Fondamentalmente ci sono due modelli di transazione:nidificato e piatto modello. Nel modello nidificato, se si avvia una transazione e ne occorre un'altra, la prima rimane attiva, ovvero la seconda verrà nidificata all'interno del suo genitore e così via. Nel modello flat, invece, la prima transazione sarà sospesa, cioè non la utilizzeremo fino a quando non sarà completata quella nuova.

AFAIK il modello flat viene utilizzato quasi esclusivamente (incluse anche le specifiche Spring e EJB), poiché è molto più facile da implementare :c'è solo una transazione attiva alla volta, quindi è facile decidere cosa fare in caso di rollback, diciamo, a causa di un'eccezione. Ancora più importante, il database sottostante deve supportarlo se è necessario il modello nidificato, quindi il modello flat è solo il comune denominatore in questo caso.