Bloqueo optimista, bloqueo pesimista ------ notas

 

Cuando se agrega un bloqueo de lectura a un dato, este dato tiene y solo se puede agregar un bloqueo de lectura. No se permiten bloqueos exclusivos ni bloqueos de escritura.

Cuando se agrega un bloqueo de escritura a un dato, no se puede agregar un bloqueo de escritura o un bloqueo de lectura a este dato.

Clasificación de bloqueo descripción general muestra Escenas a utilizar
bloqueo pesimista

El bloqueo pesimista mantiene un estado conservador para los datos modificados por el mundo exterior (pesimista)

Por lo tanto, durante todo el proceso de procesamiento de datos, los datos están bloqueados

A menudo se basan en el mecanismo de bloqueo proporcionado por la base de datos para lograrlo.

Se puede entender como: bloqueo pesimista, la actitud es pesimista, siempre piensa que los datos

Provocará conflictos durante el procesamiento, por lo que los datos a modificar quedarán bloqueados

Bloqueos de fila, bloqueos de página, bloqueos de tabla, bloqueos compartidos (bloqueos de lectura)

bloqueo exclusivo (bloqueo de escritura)

escribe más, lee menos

Garantice la seguridad de los datos

candado optimista

El bloqueo optimista cree que los datos no causarán conflictos durante el procesamiento

Por lo tanto, cuando los datos sean enviados y actualizados, se actualizarán formalmente.

Si los datos entran en conflicto o no, si ocurre un conflicto, entonces

Devolver un mensaje de error al usuario y dejar que el usuario decida qué hacer

Bloqueo optimista de base de datos, bloqueo optimista de caché Lea más, escriba menos, mejore el rendimiento

El motivo del alto rendimiento del bloqueo optimista: la tabla solo se bloquea en el momento en que se actualizan los datos

 

Esquema de implementación de bloqueo optimista de base de datos:

Ventajas: simple y eficiente, estable y fiable.

Desventajas: baja concurrencia

1. Realizado por número de versión

Modifique la estructura de la tabla y agregue una columna de versión. Cada vez que se actualiza el inventario, el número de versión es +1.

update goods_info set amount = amount - #{buys} , version = version + 1
where code = #{code} and version = #{version}

2. A través del control estatal

Juzgar que el inventario menos la cantidad de compra es mayor que 0

update goods_info set amout = amout - #{buys}
where code = #{code} and amout-#{buys} >0

Esquema de implementación de bloqueo optimista de caché:

Uso del mecanismo CAS (Comparar e intercambiar)

Análisis de pasos: leer datos ---> comparar datos----> actualizar datos

 

Análisis de escenario: Escenario de picos

La escena seckill incluye: agarrar boletos, seckill de productos básicos, agarrar sobres rojos y reservas en línea. . .

Características de seckill:

1. Lea más y escriba menos: como comprar boletos, 6000 personas vienen a comprar 200 boletos

2. Alta concurrencia a corto plazo y presión de carga pesada

3. La competencia de recursos es limitada, no se puede vender más, no se puede vender menos, no se puede revender

De acuerdo con las características de seckill, el bloqueo optimista se puede utilizar para controlar la operación de inventario.

service-----Modificar proceso de método de inventario:

Obtener objeto de inventario de productos básicos --- obtener inventario de productos básicos --- juzgar si el inventario es suficiente (si el inventario es menor que el monto de compra actual) --- obtener el número de versión

---Actualizar el inventario con el número de versión ---El subproceso actual que no se actualiza duerme (el tiempo de suspensión es aleatorio) ---Llama recursivamente al método de modificación del inventario

 

Realizar seckill basado en caché---realizar mecanismo CAS

 

 

Supongo que te gusta

Origin blog.csdn.net/u010994966/article/details/81333361
Recomendado
Clasificación