Es una técnica que puede considerarse dentro de las optimistas .Se asigna a cada transacción un identificador único, su marca de tiempo (tiempo de inicio).No hay bloqueos. Se retardan las actualizaciones hasta el final de la transacción.
Si una transacción quiere actualizar o consultar un dato que ha sido actualizado por una transacción de fecha posterior (más reciente), entonces se deshace y se vuelve a lanzar. Es decir si se intenta usar un dato que se ha modificado después de que la transacción se inicie, no se puede continuar porque el valor inicial que tenía el dato para la transacción ha cambiado. Este mecanismo asegura la seriabilidad al ordenar las transacciones evitando solapamientos, basándose en el momento de inicio de cada transacción. Además, no se pueden producir interbloqueos al no usar mecanismos que impliquen la espera de las transacciones. El administrador de transacciones asigna también una estampa de tiempo a todas las operaciones solicitadas por una transacción. Más aún, a cada elemento de datos x se le asigna una estampa de tiempo de escritura, wts(x), y una estampa de tiempo de lectura, rts(x); sus valores indican la estampa de tiempo más grande para cualquier lectura y escritura de x, respectivamente.
ejemplo didactico de esta tecnica:
Para ordenar las estampas de tiempo (TO) se realizara mediante la siguiente regla basadas en el lenguaje de programación turbo pascal.
Regla TO: dadas dos operaciones en conflicto, Oij y Okl, perteneciendo a las transacciones Ti y Tk, respectivamente, Oij es ejecutada antes de Okl, si y solamente si, ts(Ti) < ts(Tk). En este caso Ti se dice ser un transacción más vieja y Tk se dice ser una transacción más joven.
Dado este orden, un conflicto entre operaciones se puede resolver de la siguiente forma:
for Ri(x) do beginif ts(Ti) < wts( x ) then reject Ri(x) else accept Ri(x) rts(x) ð ts(Ti) end | for Wi(x) do beginif ts(Ti) < rts(x) and ts(Ti) < wts(x) then reject Wi(x) else accept Wi(x) wts(x) ð ts(Ti) end |
La acción de rechazar una operación, significa que la transacción que la envió necesita reiniciarse para obtener la estampa de tiempo más reciente del dato e intentar hacer nuevamente la operación sobre el dato.
No hay comentarios:
Publicar un comentario