mysql - soporta - ¿Cuándo debería usar transacciones en mis consultas?
optimizar consultas mysql explain (5)
Además de lo que escribió Nick Craver, querrá usar una transacción cuando tenga una serie de escrituras que deban realizarse atómicamente; es decir, todos deberían tener éxito o ninguno debería tener éxito.
Estoy leyendo tutoriales muy detallados sobre cómo usar transacciones con tipos de bases de datos y motores de bases de datos, pero no he encontrado una guía que me enseñe cuándo y por qué debería usarlos.
Sé que las transacciones se utilizan generalmente para la banca, por lo que cuando trabajamos con dinero, pero puedo imaginar que se usan de muchas otras maneras.
Hoy estoy trabajando en una página con varias INSERT
para una base de datos relacional, y quería saber si este es uno de los casos en que debería usarlas.
Me da la impresión de que no conozco los casos en los que los datos se pueden perder parcialmente (aparte de los errores del codificador), por lo que siempre me preocupa cuándo debería usarlos.
¿Alguien puede explicar o dar algún enlace con estas reglas fundamentales?
Estoy usando MySQL 5.0.8
. ¿Debo usar InnoDB
para todas las tablas que necesitan transacciones? En caso afirmativo, ¿ InnoDB
es más lento que el MyISAM
común, pero no debería preocuparme por eso?
Gracias
Básicamente cada vez que tiene una unidad de trabajo que es sensible a los cambios externos o necesita la capacidad de deshacer cada cambio , si se produce un error u otro motivo.
Busque aquí algunas respuestas excelentes y sus razones para usarlas .
En algunos marcos, por ejemplo, Spring, las transacciones automáticas permiten volver a ejecutar una transacción si falla.
Las transacciones se deben usar cuando existe la posibilidad de que el hecho de no completar o que alguien más lea o escriba en el medio de su tarea podría dañar los datos. Estos incluyen pero no están limitados a:
- Lectura de una tabla para su eliminación posterior
- Escribir datos relacionados en varias tablas
Utiliza las transacciones cuando tiene un grupo de acciones que deben ser atómicas (todas tienen éxito o ninguna tiene éxito). Envolver estas acciones en una transacción le permite deshacer acciones que ya han tenido éxito cuando se encuentra con un error. También asegura que los datos con los que está trabajando son consistentes, ya que los bloqueos se mantendrán hasta que se complete la transacción.