MySQL - Consultas sobre Transacciones

   
Vista:
Imágen de perfil de Juan Diego

Consultas sobre Transacciones

Publicado por Juan Diego juan.diego1990@hotmail.com (5 intervenciones) el 16/05/2016 03:01:29
Muy buenas noches a todos, espero se encuentren muy bien.

De antemano agradezco la atención que tienen ante la inquietudes que se presentan al momento de construir conocimiento y ahora que quiero construir una aplicación de forma profesional, sé que ustedes serán de gran ayuda para llevarlo a ser una realidad.

Luego de resolver el tema de los collations, encontré una situación respecto a la declaración de claves primarias, en la cual algunos recomendaban el uso del auto_increment y otros no.

Entendiendo que el uso del auto_increment ayuda a la optimización del aplicativo en temas de búsqueda, en comparación con la búsqueda por medio de cadenas, decidí empezar a usar este método pero me encontré con otra encrucijada, y es la recuperación del registro insertado, el cual se obtiene con LAST_INSERT_ID(), el cual me llevó al tema de concurrencia y por ende a Transacciones.

Mi preguntas son las siguientes

1 - ¿Cuándo se comienza una transacción con start transaction, en ese bloque de código se deshabilita el autocommit?

2 - ¿Entendiendo que hay tablas que tienen cabecera y detalle, con las transacciones aseguro un aislamiento de la información? es decir ¿no trunco la información de dos usuarios que al mismo tiempo estén guardando?
3 - ¿El uso de transacciones no afecta el rendimiento de la aplicación dado que bloquea la tabla para la escritura de la información? por lo menos para ingresar o ¿tendría que ser una cantidad grande de personas que al mismo tiempo quieran guardar?

Muchas gracias por su oportuna respuesta, entre todos generamos conocimiento.

Feliz noche.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consultas sobre Transacciones

Publicado por Gonzalo (103 intervenciones) el 16/05/2016 19:44:55
1 - ¿Cuándo se comienza una transacción con start transaction, en ese bloque de código se deshabilita el autocommit?

Por supuesto. De lo contrario la transaction NO EXISTIRÍA...

2 - ¿Entendiendo que hay tablas que tienen cabecera y detalle, con las transacciones aseguro un aislamiento de la información? es decir ¿no trunco la información de dos usuarios que al mismo tiempo estén guardando?

No existen dos usuarios concurrentes. El primer usuario que inicia la TX bloquea al segundo para realizar operaciones DML de ABM en las tablas. Las operaciones del segundo se encolan hasta que la TX se termine o cancele.
Precisamente esta situación hace que se requieran ciertas lecturas consistentes y tomar prevenciones para evitar lecturas fantasmas.

3 - ¿El uso de transacciones no afecta el rendimiento de la aplicación dado que bloquea la tabla para la escritura de la información? por lo menos para ingresar o ¿tendría que ser una cantidad grande de personas que al mismo tiempo quieran guardar?

Se debe analizar el nivel de concurrencia para poder optimizar tanto los procesos de la base como de la aplicación. Implementar transacciones no es algo lineal ni sencillo, pero si es importante cuando hay alta concurrencia.
La optimizacion dependerá de los recursos involucrados, pero si tienes en cuenta que cada vez que acudes a un cajero automático estás usando un sistema transaccional, te podrás imaginar que hace años que se desarrollaron las técnicas para llevar la implementacion exitosamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Juan Diego

Consultas sobre Transacciones

Publicado por Juan Diego (5 intervenciones) el 16/05/2016 21:01:31
Buenas tardes Gonzalo,

Muchas gracias por tu amable respuesta, realmente me tranquiliza enormemente saber esto ya que puedo empezar a implementarlo.

Feliz día.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar