2009-11-25 19 views
5

En el manual de Spring Framework, indican que, para PROPAGATION_REQUIRES_NEW, se suspenderá la transacción actual.¿Cómo funciona la suspensión de transacciones en MySQL?

¿Qué significa "transacción suspendida"? El temporizador para el tiempo de espera deja de contar con la transacción actual? ¿Cuáles son las implicaciones reales de tal suspensión?

Gracias,

Asaf

Respuesta

4

Esto no significa nada especial, una transacción suspendida es sólo una transacción que es temporalmente no se utiliza para las inserciones, actualizaciones, confirmar o deshacer, porque un nuevo la transacción debe crearse debido a las propiedades de propagación especificadas, y solo una transacción puede estar activa al mismo tiempo.

Básicamente hay dos modelos de transacción: el modelo anidado y plano. En el modelo anidado, si inicia una transacción y necesita otra, la primera permanece activa, es decir, la segunda estará anidada dentro de su matriz, y así sucesivamente. Por otro lado, en el modelo plano, la primera transacción se suspenderá, es decir, no la utilizaremos hasta que se haya completado la nueva.

yo sepa el modelo plano se utiliza casi exclusivamente (incluyendo la primavera y la especificación EJB así), ya que es mucho más fácil de implementar: sólo hay una transacción activa en un momento dado, por lo que es fácil decidir qué hacer en caso de una reversión, por ejemplo, debido a una excepción. Más importante aún, la base de datos subyacente tiene que admitirlo si necesita el modelo anidado, por lo que el modelo plano es solo el denominador común en este caso.

Cuestiones relacionadas