04/10/2009, 14:14
|
| Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años Puntos: 2658 | |
Respuesta: Pregunta sobre lock tables Imagina dos personas accediendo a la misma cuenta bancaria compartida desde cajeros electrónicos diferentes y al mismo tiempo, usando cada uno su clave:
El usuario A consulta el saldo, y luego el B lo hace (uno o dos segundos después).Ambos ven el mismo saldo de 1500 loquesea.
A realiza primero una extracción de1000; un segundo después, B realiza un pago electrónico de una compra por 1200. Pero el sistema (por razones de software, el pago electrónico entra primero a la central y se acredita. Esto hace que cuando el sistema recibe la petición de los 1000, ya no existe saldo para cubrir el retiro. ¿Cómo se evita eso?
Te doy otro caso:
A revisa un registro de datos, para actualizar valores. B (desde otra terminal) lo manda a borrar. Para cuando entra la modificación de A el sistema colapsa porque el registro ya ha dejado de existir, y nadie ha advertido el problema a nivel de la aplicación.
En definitiva, para eso sirven las transacciones, y para ello se determinan los bloqueos de tablas: Para evitar que dos procesos concurrentes realicen tareas que se excluyan entre sí.
¿Te imaginas el resultado de problemas así en el software de control de un reactor nuclear, o un oleoducto? Bueno, en el nivel de procesos de datos pasa lo mismo, lo que te puede hacer es dejar cerrado todo el sistema de cajas de una red de 500 sucursales de supermercados... por ejemplo.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |