Técnica de Timbres de Tiempo

Técnica de Timbres de Tiempo

La técnica de timbres de tiempo es un método de control de concurrencia que asigna una marca de tiempo única a cada transacción. Esta marca de tiempo indica el orden en el que las transacciones se iniciaron. Al utilizar estos timbres, el sistema puede determinar el orden correcto de ejecución de las transacciones y resolver conflictos de manera consistente.

¿Cómo funciona?

  1. Asignación de Timbres de Tiempo:
    • A cada transacción se le asigna un timbre de tiempo único al inicio de su ejecución. Este timbre suele ser el valor del reloj del sistema en el momento en que la transacción comienza.
  2. Ordenamiento de Transacciones:
    • Las transacciones se ordenan de acuerdo a sus timbres de tiempo. La transacción con el timbre de tiempo más bajo se considera la más antigua y se ejecuta primero.
  3. Detección de Conflictos:
    • Si dos transacciones intentan modificar los mismos datos y sus timbres de tiempo son diferentes, se produce un conflicto.
  4. Resolución de Conflictos:
    • La transacción con el timbre de tiempo más bajo (la más antigua) se considera la correcta y se permite que se ejecute.
    • La transacción con el timbre de tiempo más alto (la más reciente) se aborta y debe reiniciarse.

Ventajas de la Técnica de Timbres de Tiempo

  • Simplicidad: Es un concepto relativamente sencillo de entender e implementar.
  • Escalabilidad: Funciona bien en sistemas distribuidos.
  • Evita Deadlocks: Al ordenar las transacciones por tiempo, se reduce la probabilidad de que se produzcan deadlocks.

Desventajas de la Técnica de Timbres de Tiempo

  • Abortos de Transacciones: Si hay muchos conflictos, puede haber una alta tasa de abortos de transacciones.
  • Relojes Desincronizados: En sistemas distribuidos, los relojes de diferentes nodos pueden estar ligeramente desincronizados, lo que puede llevar a decisiones incorrectas sobre el orden de las transacciones.
  • No garantiza la serializabilidad estricta: En algunos casos, puede no garantizar que el resultado final sea el mismo que si las transacciones se hubieran ejecutado secuencialmente en el orden de sus timbres de tiempo.

Ejemplo

Imagina dos transacciones, T1 y T2, que quieren actualizar el saldo de una cuenta bancaria. T1 comienza a ejecutarse primero y obtiene un timbre de tiempo de 100. T2 comienza a ejecutarse después y obtiene un timbre de tiempo de 150.

  • T1: Lee el saldo actual y resta 100 euros.
  • T2: Lee el saldo actual y suma 50 euros.

Si ambas transacciones intentan modificar el mismo registro, se produce un conflicto. Como T1 tiene un timbre de tiempo más bajo, se considera la transacción correcta y se permite que se ejecute. T2 se aborta y debe reiniciarse.

Algoritmo Simplificado

función ejecutar_transacción(transacción)
    asignar_timbre_de_tiempo(transacción)
    while no_finalizada(transacción)
        if hay_conflicto(transacción)
            si mi_timbre_de_tiempo < otro_timbre_de_tiempo
                continuar
            sino
                abortar_transacción
            fin_si
        fin_si
        // Ejecutar la operación de la transacción
    fin_while
fin_función

En resumen, la técnica de timbres de tiempo es una herramienta útil para controlar la concurrencia en bases de datos. Al asignar un orden a las transacciones basado en sus timbres de tiempo, se puede resolver de manera eficiente la mayoría de los conflictos. Sin embargo, es importante considerar las posibles desventajas y elegir la técnica de control de concurrencia más adecuada para cada aplicación.

Comentarios

Entradas más populares de este blog

Procedimientos almacenados, manejo de excepciones

Procedimiento almacenado, manejo de transacciones

Procedimiento almacenado recuperación de información