Controlador de bloqueo
Descripción general
 Mejore la eficacia de la liberación de interbloqueo en el controlador de bloqueo permitiendo la actualización de bloqueo. ] La cola de espera de bloqueo 5 pone en cola una solicitud de bloqueo del programa de transacción 2. El procesador de bloqueo 7 ejecuta el bloqueo cuando la solicitud de bloqueo extraída de la cola de espera de bloqueo es ejecutable y la solicitud de bloqueo en el estado de bloqueo con respecto al recurso es una solicitud de bloqueo en la que se realiza la solicitud de bloqueo en modo exclusivo y el mismo recurso Cuando el bloqueo ya está hecho en el modo de intercambio, se elimina de la cola de espera de bloqueo y se emite una notificación de interbloqueo. El convertidor de modo 3 convierte la solicitud de bloqueo del modo de intercambio del programa de procesamiento de transacciones instruido para ser reejecutado bajo el control del monitor de transacción 10 que recibió la notificación de interbloqueo en la solicitud de bloqueo de modo de exclusión y lo registra en la cola de espera de bloqueo .
Campo técnico
Campo técnico La presente invención se refiere a un controlador de bloqueo para un recurso compartido en el procesamiento de transacciones, y más particularmente a un controlador de bloqueo para liberar un punto muerto provocado por un bloqueo de recurso compartido al volver a ejecutar una transacción.
Antecedentes de la técnica
En el controlador de bloqueo convencional, los recursos compartidos están bloqueados en dos modos, un modo de intercambio que permite compartir un recurso compartido y un modo exclusivo que permite el uso exclusivo de recursos compartidos, y el control exclusivo mediante dos modos de bloqueo se muestra en la figura 2 Para obtener más información sobre el controlador de bloqueo convencional, consulte Mamoru Maekawa 'Entorno de ejecución / desarrollo de software' Sección 4.7 'Extensión a recursos compartidos').
Un programa de procesamiento de transacciones típico que usa un controlador de bloqueo convencional lee un registro de un archivo, actualiza una parte de los campos en el registro y actualiza el registro para escribir el registro.
En esta situación, el bloqueo se realiza en el registro para ser leído en el modo de compartir, y el mismo registro se bloquea en modo exclusivo en el momento de escribir el registro. La operación de bloqueo nuevamente en modo exclusivo para un recurso que se bloqueó en el modo compartido dentro de una transacción idéntica se denomina actualización de bloqueo.
Por ejemplo, en el procesamiento de lectura de un archivo, se desconoce si se actualizará más tarde en el momento de la lectura, por lo que es común bloquear el modo compartido en el momento de la lectura y bloquear en modo exclusivo en el momento de la escritura y bloquear la actualización Se genera En el caso en que el programa de procesamiento de transacciones se crea dividiendo en una pluralidad de subrutinas en el bloqueo de la tabla de control o el recurso, el recurso que la rutina de llamadas bloquea en el modo compartido es el modo exclusivo en la rutina de destino de la llamada También se produce una actualización de bloqueo al bloquear.
Actualizar los bloqueos no es un problema para los registros que no se actualizan con frecuencia, pero la actualización de bloqueos contra los registros actualizados con frecuencia (estos registros se llaman puntos críticos) provocará bloqueos. Como se muestra en la figura 3, cuando tres transacciones 41, 42 y la transacción 43 leen el punto caliente 44 en un momento cercano y se bloquean en el modo compartir y hacen una solicitud de bloqueo en modo exclusivo para escribir el registro, Como la otra transacción es una solicitud de bloqueo en modo exclusivo para un recurso bloqueado en el modo compartido, tres transacciones se esperan entre sí y se produce un interbloqueo.
Se dice que la mayoría de las causas de estancamiento en bases de datos relacionales se encuentran en la actualización de bloqueos para este punto de acceso (por ejemplo, Jim Gray, Andreas Reuter 'TRANSACTION PROCESSING' Sección 7.8.2 'Bloqueos de modo de actualización').
En el procesamiento de transacciones, cuando se produce un interbloqueo en el controlador de bloqueo, se notifica un interbloqueo al supervisor de transacciones, y el monitor de transacciones libera el interbloqueo al interrumpir una o más transacciones incluidas en el punto muerto Es común.
La transacción interrumpida se vuelve a ejecutar por el supervisor de transacciones después de revertir recursos como la base de datos a la que accede la transacción.
Tarea de solución
El controlador de bloqueo convencional descrito anteriormente tiene la desventaja de que la eficacia de la liberación de interbloqueo es deficiente.
Es decir, cuando N transacciones leen zonas activas a la hora de cierre, bloquear en modo compartir y bloquear solicitudes en modo exclusivo para escribir registros estimar el número de veces que las transacciones se suspenden y se vuelven a ejecutar Es como sigue.
Para bloquear con éxito el modo exclusivo, es condicional que las transacciones que no sean una transacción que bloquea el modo exclusivo no se bloqueen, por lo que N 1 piezas de bloqueo en el modo de intercambio a la zona activa La transacción debe ser suspendida. Las transacciones N1 suspendidas se vuelven a ejecutar, el bloqueo se realiza en el modo de compartir como antes de la interrupción, se lee el punto de acceso y la solicitud de bloqueo se emite en modo exclusivo para escribir el registro. Las transacciones N 2 deben interrumpirse nuevamente para liberar el punto muerto. Por lo tanto, el número de interrupciones de transacciones cuando N transacciones causan un punto muerto en la actualización del bloqueo al punto de acceso,
1 + 2 + + (N 2) + (N 1) = N (N 1) / 2 veces
.
El procesamiento de la interrupción de la transacción implica una sobrecarga porque la transacción requiere la reversión del recurso al que se accedió hasta justo antes de la interrupción. El procesamiento de interrupción de transacción N (N 1) / 2 es necesario, especialmente cuando las transacciones N generan un interbloqueo al actualizar el bloqueo a la zona activa y con los controladores de bloqueo convencionales. Hubo un problema en la eficacia de liberar el punto muerto que ocurre.
Solución
Un controlador de bloqueo según la presente invención realiza un control de bloqueo en un caso en el que el bloqueo se realiza nuevamente en modo exclusivo con respecto a un recurso bloqueado en un modo común dentro de la misma transacción, y se emite una solicitud de bloqueo del programa de transacción Una cola de espera de bloqueo se pondrá en cola, se obtiene una solicitud de bloqueo de la cola de espera de bloqueo y se ejecuta el bloqueo si la solicitud de bloqueo es ejecutable y la solicitud de bloqueo en un estado de bloqueo con respecto al recurso está bloqueada Un procesador de bloqueo para eliminación de dicha cola de espera de bloqueo y para emitir una notificación de interbloqueo cuando dicho recurso ya está bloqueado en dicho modo compartido con respecto a dicho recurso, y un procesador de bloqueo para recibir dicha notificación de punto muerto Transacciones instruidas para ser re ejecutadas por control del monitor de transacciones Y un convertidor de modo que convierte la solicitud de bloqueo del modo de intercambio del programa de procesamiento compartido en la solicitud de bloqueo del modo exclusivo y registra la solicitud de bloqueo en la cola de espera de bloqueo. Y el bloqueo se realiza en modo exclusivo en respuesta a la solicitud de bloqueo, por lo que la solicitud de bloqueo después de la re ejecución se hace con éxito y se mejora la eficacia de liberar el interbloqueo.
Ejemplos
A continuación, la presente invención se describirá con referencia a los dibujos.
La figura 1 es un diagrama de bloques de un controlador de bloqueo de acuerdo con una realización de la presente invención, que es un ejemplo de aplicación al procesamiento de transacciones. El controlador de bloqueo 1 identifica la transacción de origen de solicitud de bloqueo por un identificador de transacción, identifica el recurso a bloquear por un identificador de recurso, y tiene un modo compartido y un modo exclusivo como modos de bloqueo.
Al recibir la solicitud de procesamiento de transacción, el supervisor 10 de transacción activa el programa 2 de procesamiento de transacción asignando un nuevo identificador de transacción. Cuando el programa de procesamiento de transacciones 2 finaliza 16, se lleva a cabo el procesamiento de compromiso del recurso y la solicitud de control de bloqueo 11 y la solicitud de restablecimiento 12 se emiten a la unidad de control de bloqueo 1 y luego finaliza el procesamiento de la transacción.
El programa de procesamiento de transacción activado 2 especifica el identificador de transacción dado por el supervisor de transacción 10 y el identificador de recurso correspondiente al recurso a bloquear de acuerdo con el procesamiento del recurso a ser accedido y establece la solicitud de bloqueo 8 en el modo exclusivo y la solicitud de bloqueo 9 al controlador de bloqueo 1.
La solicitud de bloqueo de modo compartido 9 se envía al convertidor de modo 3, y el convertidor de modo 3 comprueba si la ocurrencia del bloqueo está registrada en la memoria de interbloqueo 4. Si el modo de bloqueo registrada se cambia a petición de bloqueo modo exclusivo se ha registrado en la cola de bloqueo 5, si no se ha registrado se registra en la cola de bloqueo 5 como una solicitud de bloqueo en modo compartido. Por otro lado, la solicitud de bloqueo de modo exclusivo 8 se registra directamente en la cola de espera de bloqueo 5 como una solicitud de bloqueo en el modo exclusivo.
dispositivo de almacenamiento de interbloqueo 4 es una base de datos en la que establece una entrada del identificador de transacción y el identificador de recursos, o conjunto de identificador de transacción especificado y el identificador de recurso como un parámetro de la solicitud de bloqueo es registrada por el convertidor de modo 3 es inspeccionado . Cada entrada del almacenamiento de interbloqueo 4 indica que se ha producido un interbloqueo en la solicitud de bloqueo 8 en el modo exclusivo para la transacción identificada por el identificador de transacción para actualizar el bloqueo al recurso identificado por el identificador de recurso Ahí
La solicitud de bloqueo registrada en la cola de espera de bloqueo 5 se saca en el momento en que el procesador de bloqueo 7 la puede bloquear en el momento en que se registra la solicitud de bloqueo en la cola de espera de bloqueo 5 y el momento en que se solicita la liberación de bloqueo 11 Se realiza un proceso de bloqueo.
El procesador 7 de bloqueo gestiona el estado de bloqueo del recurso correspondiente al identificador de recurso mediante la base de datos que tiene una entrada del identificador de recurso, el identificador de transacción y el modo de bloqueo, y realiza el proceso de bloqueo de acuerdo con la FIG.
Es decir, un bloqueo de modo exclusivo realiza el procesamiento de bloqueo porque las búsquedas de la entrada con el identificador de recurso de bloqueo está bloqueado por otra transacción puede ser bloqueado cuando no se realiza, bloqueo en modo compartido tiene un bloqueo de recursos de entrada de identificador Cuando no se realiza la búsqueda y el bloqueo por modo exclusivo mediante otra transacción, es posible el bloqueo, por lo que se realiza el bloqueo.
En el proceso de bloqueo para registrar un conjunto de identificador de recursos y el identificador de transacción y un modo de bloqueo en un tampón en el procesador de bloqueo (no mostrado), además identificador de transacción y el identificador de recursos en la unidad de almacenamiento de transacción compartido 6 en el caso de un bloqueo en modo compartido . Y notifica la finalización del bloqueo al programa de procesamiento de transacciones 2 después de completar el proceso de bloqueo.
La memoria de transacción 6 es una base de datos para registrar que el programa de procesamiento de transacciones 2 está bloqueando el modo compartido al recurso correspondiente al identificador de recursos, y si la actualización de bloqueo debía o no realizarse en el momento de detectar el punto muerto Se hace referencia a esto desde el procesador de bloqueo 7 para la discriminación.
Además, el procesador de bloqueo 7 comprueba periódicamente la cola de espera de bloqueo 5, y si hay una solicitud de bloqueo esperando un cierto período de tiempo o más, se produce un interbloqueo en el recurso esperando la solicitud de bloqueo. la determinación, y se retiró de la una a la cola de bloqueo 5 una solicitud de bloqueo que es la de esperar más de un tiempo predeterminado, se cancela la petición de bloqueo, excepto la última solicitud de bloqueo, el identificador de transacción de bloqueo notificación punto muerto solicitando como un parámetro 13 para el monitor de transacciones. Como la última solicitud de bloqueo puede bloquearse, se ejecuta el bloqueo. La fila de espera de bloqueo 5 se inspecciona nuevamente y se determina si es posible o no bloquear si hay una solicitud de bloqueo esperando un tiempo predeterminado o más. Si no es posible bloquearlo, repita la cancelación de la solicitud de bloqueo en el punto muerto anterior.
Por ejemplo, en el caso de la figura 3, la solicitud de bloqueo de modo exclusivo de la transacción 41 se cancela, y luego se cancela la solicitud de bloqueo de modo exclusivo de la transacción 42. En este punto, la solicitud de bloqueo de modo exclusivo de la transacción 43 se puede procesar y se libera el interbloqueo.
Cuando la solicitud de bloqueo cancelada por el interbloqueo está en modo exclusivo y el identificador de transacción y el identificador de recurso están registrados en el almacenamiento compartido de transacciones 6 (en el caso donde el mismo recurso ya está bloqueado en el modo compartido), el punto muerto Y registra el identificador de transacción y el identificador de recurso en la memoria 4.
Al recibir la notificación 13 de interbloqueo, el monitor 10 de transacción ejecuta la solicitud 11 de liberación de bloqueo después de realizar la reversión de recursos, elimina la solicitud de bloqueo, y luego vuelve a ejecutar el programa 2 de procesamiento de transacciones.
La solicitud de liberación de bloqueo 11 elimina la solicitud de bloqueo solicitada de la transacción desde la base de datos de la cola de espera de bloqueo 5 y el procesador de bloqueo 7 usando el identificador de transacción como una clave.
Por otro lado, cuando el programa de procesamiento de transacción 2 termina 16, la solicitud de reinicio 12 emitida después del procesamiento de compromiso realizado por el supervisor de transacción 10 elimina la entrada de la base de datos correspondiente a la solicitud de bloqueo solicitada por la transacción con el identificador de transacción como clave Desde el almacenamiento de bloqueo 4 y el almacenamiento compartido de transacciones 6.
En el programa de procesamiento de transacción 2 basado en el reinicio 15 después de que se emite la notificación de interbloqueo 13 al supervisor de transacción 10, la solicitud de bloqueo de modo compartido 9 para el recurso que causó el punto muerto anterior se refiere al almacenamiento de interbloqueo 4 El convertidor de modo 3 cambia el modo a la solicitud de modo exclusivo y se pone en cola en la cola de espera de bloqueo 5.
Cuando la solicitud del modo exclusivo es exitosa, dado que la solicitud de bloqueo compartido del otro programa de procesamiento de transacciones está esperando, la solicitud de bloqueo 8 del modo exclusivo sucesivo también tiene éxito y se cancela el evento del punto muerto.
En el bloqueo normal en el que no se registra el interbloqueo en la memoria 4 de punto muerto, dado que el bloqueo en el modo de intercambio realiza el proceso de bloqueo en el modo de intercambio, funciona de la misma manera que el procesador de bloqueo ordinario.
En el procesamiento de transacciones al que se aplica el controlador de bloqueo de la presente invención, cuando N transacciones leen hotspots muy cerca, se bloquea en el modo de uso compartido y las solicitudes de bloqueo se realizan en modo exclusivo para escribir registros, la transacción se interrumpe El número de veces que se vuelve a ejecutar se calcula de la siguiente manera.
Para bloquear con éxito el modo exclusivo, es condicional que las transacciones que no sean una transacción que bloquea el modo exclusivo no se bloqueen, por lo que N 1 piezas de bloqueo en el modo de intercambio a la zona activa La transacción debe ser suspendida.
Las transacciones N1 suspendidas se vuelven a ejecutar y el hotspot se lee de la misma manera que antes de la interrupción, y el bloqueo se realiza en modo compartido. Como la solicitud de bloqueo se procesa en modo exclusivo dentro de este procesador de bloqueo, en el modo de actualización posterior El bloqueo no ocurre con la solicitud de bloqueo de
Por lo tanto, cuando las transacciones N causan interbloqueo al actualizar bloqueos a puntos activos, el número de interrupciones de las transacciones es (N 1) veces.
Efecto de la invención
Como se describió anteriormente, de acuerdo con la presente invención, cuando se produce un interbloqueo en el bloqueo del recurso que está actualizando el bloqueo, la transacción se interrumpe y el bloqueo se realiza cambiando al modo exclusivo a pesar del modo de intercambio. La cola de espera de bloqueo mantiene el bloqueo del modo compartido de otra transacción y el bloqueo del modo exclusivo, por lo que el bloqueo después de la re ejecución es satisfactorio y la eficacia de la liberación del punto muerto es buena (N (N 1) / 2 Disminuyendo de N veces a N 1 veces).
La figura 1 es un diagrama de bloques que muestra una realización de un controlador de bloqueo de acuerdo con la presente invención.
La figura 2 es un diagrama que muestra las reglas para el control exclusivo en la presente invención.
La figura 3 es un diagrama explicativo de la aparición de interbloqueo.
1 control de bloqueo
2 Programa de procesamiento de transacciones
Convertidor de 3 modos
4 memoria de Deadlock
5 Cola de espera de bloqueo
6 Almacenamiento de transacciones compartidas
7 bloquear el procesador
10 monitor de transacciones
Reclamo
1. Un controlador de bloqueo para realizar control de bloqueo en un caso donde el bloqueo se realiza nuevamente en un modo exclusivo con respecto a un recurso bloqueado en un modo compartido dentro de la misma transacción, el controlador espera bloqueo para poner en cola una solicitud de bloqueo del programa de transacción Se obtiene una solicitud de bloqueo de la cola de espera de bloqueo y si se puede ejecutar la solicitud de bloqueo, se ejecuta el bloqueo y en la solicitud de bloqueo en el estado de bloqueo con respecto al recurso, la solicitud de bloqueo se ejecuta en modo exclusivo Un procesador de bloqueo para eliminar el recurso de la cola de espera de bloqueo y generar una notificación de punto muerto cuando el recurso ya está bloqueado en el modo compartido con respecto al recurso, un procesador de bloqueo para controlar el supervisor de transacción que recibió la notificación de punto muerto Y dijo que el procesamiento de transacciones pro La solicitud de bloqueo para el modo de uso compartido del carnero se convierte en la solicitud de bloqueo para el modo exclusivo y un convertidor de modo que estar registrado en la cola de bloqueo, la solicitud de bloqueo para el modo compartido por volver a ejecutar la transacción de estancamiento Y el bloqueo se realiza en modo exclusivo con respecto a la solicitud de control de bloqueo, lo que hace que la solicitud de bloqueo después de la re ejecución tenga éxito y mejora la eficacia de liberación del interbloqueo.
Dibujo :
Application number :1997-026907
Inventors :日本電気ソフトウェア株式会社
Original Assignee :武田祥浦