Cita:
Empezado por Abel Garcia
Tengo entendido que Todas las aplicaciones pueden Ejecutar una lectura al mismo tiempo sin problema, estoy bien ?
|
correcto
Cita:
Empezado por Abel Garcia
el problema es que no todas pueden modificar al mismo tiempo
|
¡Momento! esto tiene sus matices. No mas de una transacción puede modificar el mismo registro al mismo tiempo, pero ningun conflicto ocurre si la transacción a modifica la existencia de las cocacolas mientras la transacción b modifica la de las lechugas...
Cita:
Empezado por Abel Garcia
bueno la consulta es cual seria la forma de lograr esto
|
No tengo ahora a mano ningún documento que pueda ayudarte... pero en general la regla es sencilla: Transacciones cortas y en la medida de lo posible, realizar actualizaciones en el mismo orden para evitar deadlocks (la transacción a modifica el registro 1, luego intenta modificar el 2 y se ve obligada a esperar porque ese registro fue modificado por la transacción b. Resulta que la transacción b modificó el registro 2 y luego intenta modificar el 1, pero este ya ha sido modificado por a. Resultado: un
abrazo de la muerte (

), es decir, un deadlock, donde a espera a b, pero b espera a a... Esto se evita logrando que tanto a y b actualicen primero 1 y luego 2.
Cuando una transacción modifica un registro, este queda bloqueado para cualquier otra transacción que intente modificarlo. El bloqueo es liberado cuando la transacción termina (con un commit o un rollback), por lo que conviene tener transacciones cortas en el tiempo. Si un programa inicia una transacción, modifica un registro, el usuario se va a tomar una taza de café y hacer la siesta, para luego regresar a modificar otro y hacer commit, todo se vuelve un caos. Para ello, es mejor mantener todas las modificaciones en memoria y luego enviarlas en un solo paso al servidor de base de datos. Existen varias técnicas para ellos, por ejemplo, podrías activar los cached updates o usar client datasets.
Te dejo hasta aqui, que ni soy bueno redactando, ni quiero perderte en un tema que está bien documentado y del que seguramente encontrarás información de mejor calidad.
Hasta luego.
