Ver Mensaje Individual
  #2  
Antiguo 31-01-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 28
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita