Compartir a través de


Uso de secuencias de registro con el Administrador de transacciones de kernel (KTM)

Los sistemas de procesamiento de transacciones (TPS) basados en KTM deben registrar la actividad de transacción mediante common Log File System (CLFS). KTM crea un flujo de registro para cada objeto del administrador de transacciones. Cada administrador de recursos debe crear su propio flujo de registro.

Creación de flujos de registro para objetos del Administrador de transacciones

When your resource manager calls ZwCreateTransactionManager, you must specify the name of a CLFS log stream. Si la secuencia especificada no existe, KTM la crea. If the stream already exists, ZwCreateTransactionManager reopens it. KTM asigna este flujo de registro al objeto del administrador de transacciones.

KTM usa el flujo de registro del objeto del administrador de transacciones para registrar información de estado interno sobre el objeto del administrador de transacciones y los siguientes objetos asociados a él:

  • Todos los objetos de Resource Manager asociados
  • Todos los objetos de transacción asociados
  • Todos los objetos de inscripción asociados

Si las operaciones transaccionales se interrumpen antes de que se completen, KTM puede usar la información del registro para determinar si se deben confirmar o revertir las transacciones.

KTM no registra los datos de transacción que los administradores de recursos reciben o envían a los clientes. Los administradores de recursos deben usar sus propios flujos de registro para registrar esta información.

Resource managers can call ZwQueryInformationTransactionManager to get information about a transaction manager object's log stream, such as the log stream's path name or the GUID that KTM assigns to the stream.

Creación de flujos de registro para administradores de recursos

In its initialization code, each resource manager should call ClfsCreateLogFile to create its own log stream. Cada administrador de recursos debe usar su secuencia para registrar toda la información sobre las transacciones que requiere para confirmar, revertir o recuperar los datos de la transacción.

KTM y todos los administradores de recursos de un TPS pueden usar un único archivo de registro, pero cada componente de TPS debe usar una secuencia diferente dentro del archivo de registro. For information about how to specify individual streams within a log file, see ClfsCreateLogFile.

Periodically, KTM creates a restart area in the transaction manager's log stream. Cuando KTM realiza una operación de recuperación, lee el último área de reinicio para recuperar el estado de los objetos que estaban abiertos antes del apagado del sistema. Del mismo modo, el administrador de recursos debe crear periódicamente áreas de reinicio en su flujo de registro. Por ejemplo, el administrador de recursos podría crear un área de reinicio cada vez que se complete una operación transaccional.

Para obtener más información sobre las áreas de reinicio en flujos de registro clFS, vea Leer registros de reinicio desde un flujo CLFS. Also, see the ClfsWriteRestartArea, ClfsReadRestartArea, and ClfsReadPreviousRestartArea routines.

Uso de secuencias de registro para recuperación

After your resource manager calls ZwCreateTransactionManager, it must call ZwRecoverTransactionManager. The ZwRecoverTransactionManager routine reads the transaction manager object's log stream to recover the state of the TPS to a known good point. Si el equipo se cierra correctamente (o no se apaga), la secuencia de registro contiene información mínima después de cargar el administrador de recursos por última vez. Si se produce un bloqueo del sistema, el flujo de registro contiene suficiente información de recuperación para restaurar todas las transacciones a un estado conocido.

After your resource manager calls ZwCreateResourceManager, it must call ZwRecoverResourceManager. The ZwRecoverResourceManager routine tries to recover the transactions that are associated with each of the resource manager's enlistments. Para obtener más información sobre cómo recuperar las transacciones de un administrador de recursos, consulte Control de operaciones de recuperación.

Almacenar datos de transacción

Los administradores de recursos que usan flujos de registro clFS deben almacenar los datos de transacción en áreas de cálculo de referencias de CLFS. CLFS mueve periódicamente los datos del área de cálculo de referencias del flujo de registro a un medio de almacenamiento permanente. Para registrar una operación que modifique los datos, un administrador de recursos puede realizar los pasos siguientes:

  1. Copie los datos originales, antes de que la operación de escritura lo modifique, en el área de cálculo de referencias.

  2. Realice la operación en una copia de los datos sin modificar el medio de almacenamiento permanente de la base de datos.

  3. Copie los nuevos datos en el área de cálculo de referencias.

Si el administrador de recursos recibe una notificación de reversión, puede restaurar los datos originales de la secuencia de registro. Si recibe una notificación de confirmación, el administrador de recursos puede copiar los datos modificados de la secuencia de registro al medio de almacenamiento permanente de la base de datos.

Resource managers can also use the ZwSetInformationEnlistment routine to store recovery information in an enlistment object. KTM guarda esta información en su flujo de registro y la lee del flujo de registro durante las operaciones de recuperación. Therefore, a resource manager can obtain this recovery information at any time by calling ZwQueryInformationEnlistment.