El concepto y la aplicación práctica del bloqueo pesimista y el bloqueo optimista en la base de datos.

Bloqueo pesimista

  • El concepto de bloqueo pesimista

La cerradura pesimista, como su nombre indica, tiene fuertes características exclusivas y exclusivas. Se refiere a una actitud conservadora hacia la modificación de datos por parte del mundo exterior (incluidas otras transacciones actuales del sistema y el procesamiento de transacciones de sistemas externos), por lo que los datos se bloquean durante todo el proceso de procesamiento de datos. La realización del bloqueo pesimista a menudo se basa en el mecanismo de bloqueo proporcionado por la base de datos (y solo el mecanismo de bloqueo proporcionado por la capa de la base de datos puede garantizar verdaderamente la exclusividad del acceso a los datos; de lo contrario, incluso si el mecanismo de bloqueo se implementa en este sistema, no puede estar garantizado que el sistema externo no será modificado. (datos).

En resumen, los bloqueos pesimistas se utilizan principalmente para proteger la integridad de los datos. Cuando se ejecutan varias operaciones al mismo tiempo, y una determinada operación aplica un bloqueo a los datos, otras operaciones solo pueden modificar los datos una vez finalizada la operación.

  • Ejemplo de bloqueo pesimista

En un escenario de compra de productos básicos, cuando varios usuarios realizan un pedido de un producto básico con un inventario limitado al mismo tiempo. Si se cambia la cantidad de inventario comprobando primero el inventario y luego reduciéndolo, se producirá una sobreventa.

Si se utiliza el bloqueo pesimista, cuando el usuario A obtiene los datos de inventario de un determinado producto, el usuario B bloqueará y el usuario B no podrá obtener los datos de inventario del producto hasta que el usuario A complete toda la transacción de reducción de inventario. Puede evitar productos sobrevendidos. Por supuesto, esto es solo un ejemplo de fácil comprensión, si se trata de un sistema con una gran cantidad de usuarios, esta operación ciertamente no es amigable.

Cerradura optimista

  • El concepto de bloqueo optimista

Bloqueo optimista (bloqueo optimista) En relación con el bloqueo pesimista, el mecanismo de bloqueo optimista adopta un mecanismo de bloqueo más relajado. En la mayoría de los casos, el bloqueo pesimista se basa en el mecanismo de bloqueo de la base de datos para garantizar la máxima exclusividad de la operación. Pero lo que viene con esto es una gran sobrecarga en el rendimiento de la base de datos, especialmente para transacciones largas, que a menudo es insoportable. El mecanismo de bloqueo optimista resuelve este problema hasta cierto punto. Los bloqueos optimistas se implementan principalmente en función del mecanismo de registro de la versión de datos (Versión). ¿Qué es la versión de datos? Eso es agregar un identificador de versión a los datos. En una solución de versión basada en una tabla de base de datos, generalmente se logra agregando un campo de "versión" a la tabla de base de datos. Al leer los datos, lean este número de versión juntos y agregue uno a este número de versión cuando actualice más tarde. En este punto, los datos de la versión de los datos enviados se comparan con la información de la versión actual del registro correspondiente en la tabla de la base de datos. Si el número de versión de los datos enviados es mayor que el número de versión actual de la tabla de la base de datos, será actualizado; de lo contrario, se considera que los datos no están actualizados.

  • Ejemplo de bloqueo optimista

En un sistema financiero, cuando un operador lee los datos del usuario y los modifica en función de los datos leídos del usuario (como cambiar el saldo de la cuenta del usuario), si se adopta un mecanismo de bloqueo pesimista, significa que toda la operación está en curso. proceso desde que el operador lee los datos, inicia la modificación para enviar el resultado de la modificación, incluso incluyendo el momento en que el operador va a preparar café en el medio), el registro de la base de datos siempre está bloqueado. Es concebible que si se enfrenta a cientos de miles de concurrencia, a qué consecuencias conducirá esta situación.
El mecanismo de bloqueo optimista resuelve este problema hasta cierto punto. Los bloqueos optimistas se implementan principalmente en función del mecanismo de registro de la versión de datos (Versión). ¿Qué es la versión de datos? Eso es agregar un identificador de versión a los datos. En una solución de versión basada en una tabla de base de datos, generalmente se logra agregando un campo de "versión" a la tabla de base de datos.
Al leer los datos, lean este número de versión juntos y agregue uno a este número de versión cuando actualice más tarde. En este punto, los datos de la versión de los datos enviados se comparan con la información de la versión actual del registro correspondiente en la tabla de la base de datos. Si el número de versión de los datos enviados es mayor que el número de versión actual de la tabla de la base de datos, será actualizado, de lo contrario se considera que son datos desactualizados.

Ahora suponga que hay un campo de versión en la tabla de información de la cuenta en la base de datos, el valor actual es 1 y el campo de saldo de la cuenta actual (saldo) es $ 100.

método uno:

  1. El operador A lo lee en voz alta (versión = 1) y deduce $ 50 ($ 100- $ 50) del saldo de su cuenta.

2. Durante la operación del operador A, el operador B también lee esta información del usuario (versión = 1) y deduce $ 20 ($ 100- $ 20) del saldo de su cuenta.

3. El operador A completa el trabajo de modificación y agrega uno al número de versión de los datos (versión = 2), junto con el saldo de la cuenta (saldo = $ 50), y lo envía a la base de datos para su actualización. En este momento, porque los datos enviados La versión es mayor que la versión actual del registro de la base de datos. Los datos se actualizan y la versión del registro de la base de datos se actualiza a 2.

4. El operador B completó la operación y también aumentó el número de versión en uno (versión = 2) e intentó enviar datos a la base de datos (saldo = $ 80), pero en este momento, al comparar la versión del registro de la base de datos, se encontró que la versión El número de datos enviados por el operador B fue 2., La versión actual del registro de la base de datos también es 2, lo que no cumple con la estrategia de bloqueo optimista de "la versión enviada debe ser mayor que la versión actual del registro para realizar la actualización ". Por tanto, se rechaza la presentación del operador B.
De esta manera, se evita que el operador B sobrescriba el resultado de la operación del operador A con el resultado de la modificación de datos antiguos basada en la versión = 1.

Método 2:
1. El operador A lee saldo = 100 en este momento y deduce 50 (100-50) del saldo de su cuenta.

2. Durante la operación del operador A, el operador B también lee esta información de usuario saldo = 100 y deduce 20 (100-20) del saldo de su cuenta.

3. El operador A envía la deducción (100-50), junto con el saldo de la cuenta = 100 consultado originalmente como la condición de actualización, y lo envía a la base de datos para su actualización. En este momento, el saldo de la condición de actualización enviada = 100 es igual a el saldo en la base de datos original., Busque este dato y actualícelo.

4. El operador B completó la operación e intentó enviar datos (100-20) a la base de datos, y usó el saldo previamente consultado = 100 como condición de actualización, pero en este momento el saldo de la cuenta en la base de datos de comparación ya es (50), y operador B Se consultó originalmente el saldo de condición enviado 100, por lo que la base de datos no puede encontrar este registro y la operación de envío del operador B falla.

De esta manera, también es posible evitar la posibilidad de que el resultado de la antigua modificación de datos del operador B sobrescriba el resultado de la operación del operador A.

Reimpreso de: https://www.kancloud.cn/mikkle/thinkphp5_study/359349

Supongo que te gusta

Origin blog.csdn.net/qq_39004843/article/details/106123307
Recomendado
Clasificación