Está en la página 1de 7

Concurrencia Optimista

Explicacin Breve
Los bloqueos se establecen y mantienen slo mientras se est teniendo acceso a la base de datos. Los bloqueos impiden que otros usuarios intenten actualizar registros en ese mismo instante. Los datos estn siempre disponibles, excepto durante el momento preciso en que est teniendo lugar una actualizacin

Concurrencia Pesimista
La concurrencia pesimista implica bloquear filas en el origen de datos Este modelo se utiliza principalmente en aquellos entornos en los que hay mucha contencin de datos, de manera que el costo de proteger los datos con bloqueos es menor que el costo de deshacer transacciones si se producen conflictos de concurrencia

Concurrencia Optimista
los usuarios que utilizan la concurrencia optimista no bloquean una fila cuando la leen Cuando un usuario desea actualizar una fila, la aplicacin debe determinar si otro usuario la ha modificado o no desde que se ley La concurrencia optimista suele utilizarse en entornos con poca contencin de datos

Infraccin Congruencia Optimista


En un modelo de concurrencia optimista, se considera que ha habido una infraccin si, despus de que un usuario recibe un valor de la base de datos, otro usuario modifica el valor antes de que el primer usuario haya intentado modificarlo. En el ejemplo siguiente se describe cmo el servidor resuelve una violacin de concurrencia . Las siguientes tablas muestran un ejemplo de concurrencia optimista:

A la 1:00 p.m., el Usuario1 lee una fila de la base de datos con los valores siguientes: IdCliente 101 Apellido Martnez Nombre Cris Valor actual 101 Martnez Cris Valor en la base de datos 101 Martnez Cris

Nombre de columna Valor original IdCliente Apellido Nombre 101 Martnez Cris

A la 1:01 p.m., el Usuario2 lee la misma fila. A la 1:03 p.m., el Usuario2 cambia Nombre de "Cris" a "Cristina" y actualiza la base de datos. Nombre de columna Valor original IdCliente Apellido Nombre 101 Martnez Cris Valor actual 101 Martnez Cristina Valor en la base de datos 101 Martnez Cris

Nombre de columna Valor original


IdCliente Apellido Nombre 101 Martnez Cris

Valor actual
101 Martnez Cristina

Valor en la base de datos


101 Martnez Cris

La actualizacin se realiza correctamente porque los valores contenidos en la base de datos en el momento de la actualizacin coinciden con los valores originales que tiene el Usuario2. A la 1:05 p.m., el Usuario1 cambia el nombre de "Cris" a "Jaime" e intenta actualizar la fila. Nombre de columna Valor original Valor actual Valor en la base de datos

IdCliente
Apellido Nombre

101
Martnez Cris

101
Martnez Jaime

101
Martnez Cristina

En este momento, el Usuario1 encuentra una infraccin de la concurrencia optimista porque los valores de la base de datos ("Jaime") ya no coinciden con los valores originales que esperaba el Usuario1 ("Cris"). Ahora hay que tomar la decisin de sobrescribir los cambios realizados por el Usuario2 con los efectuados por el Usuario1 o cancelar los cambios del Usuario1.

También podría gustarte