Introducción al bloqueo de notas mysql

Control de concurrencia

Métodos de control de concurrencia para garantizar la coherencia de los datos:

(1) Bloqueo:

  Bloqueo ordinario: ejecución en serie

  Bloqueo de lectura y escritura: lectura y lectura concurrentes

(2) Datos de múltiples versiones: lectura y escritura concurrentes

  (1) Cuando ocurre una tarea de escritura, clone una copia de los datos, distinguida por el número de versión;

  (2) Escribir tareas para operar los datos recién clonados hasta el envío

  (3) La tarea de lectura simultánea puede continuar leyendo los datos de la versión anterior sin bloquear

Darse cuenta de leer los datos de la versión anterior:

  Registro de rehacer: El registro de rehacer se utiliza para garantizar la función ACID de los datos enviados.

    Si la actualización de datos enviada por la transacción se escribe aleatoriamente en el disco cada vez, el rendimiento es bajo. Optimización: escriba los datos modificados en el registro de rehacer en orden y actualícelos periódicamente en el disco.

  deshacer registro: garantía de deshacer registro, los datos no confirmados afectan las características ACID de la base de datos.

    Antes de confirmar la transacción, se modificará el espejo de los datos (la versión anterior a la modificación). Cuando la transacción se revierte o la base de datos se bloquea, la versión anterior se restaura.

    Insertar comportamiento deshacer registro guardar PK, actualizar / eliminar comportamiento deshacer fila del almacén de registros. Hay tampones separados.

  Segmento de reversión: almacenar registros de deshacer

InnorDB logra una alta concurrencia: InnorDB es un motor de almacenamiento basado en el control de concurrencia de múltiples versiones (MVCC)

  Los datos en el segmento de reversión son una instantánea de datos históricos.Las lecturas de instantáneas (lecturas consistentes desbloqueadas) son la razón por la que innorDB es tan concurrente.

  Las selecciones ordinarias son lecturas de instantáneas, a menos que estén bloqueadas, como seleccionar .. para actualizar.

¿Cuál es la versión de los datos leídos por la instantánea?

  En RC, la lectura de instantánea siempre lee la última instantánea de datos de fila (transacción confirmada)

  En RR, se lee la versión de datos de la primera lectura, independientemente de la hora de inicio de la transacción concurrente y la relación de exclusión mutua (sin bloqueo). Suponga que el tiempo de la primera lectura se registra como T, y los registros enviados después del tiempo T no se leerán.

Cerradura

 Información: https://mp.weixin.qq.com/s/tmkRAmc1M_Y23ynduBeP3Q

1. Siete tipos de cerraduras

1) Cerradura de auto-aumento:

  Es un bloqueo especial a nivel de tabla que inserta la columna AUTO_INCREMENT para las transacciones. Si se inserta una transacción, otras transacciones deben esperar.

2) Cerradura compartida / exclusiva

  Bloqueo compartido S: bloqueo de lectura

  Bloqueo exclusivo X: bloqueo de escritura. Cerradura muy fuerte, no compatible con otras cerraduras.

  Leer y leer puede ser paralelo, leer y escribir, escribir y escribir mutuamente excluyentes.

3) Bloqueo de intención

  El bloqueo de intención es una declaración de intención realizada antes de que una transacción desee agregar un bloqueo compartido / exclusivo. Es una cerradura a nivel de mesa.

  Intención de bloqueo compartido IS: intención de transacción para agregar bloqueo de s compartido a algunas filas de la tabla

  Intención de bloqueo exclusivo IS: la transacción agrega intencionalmente un bloqueo x exclusivo a algunas filas de la tabla

 4) Insertar bloqueo de intención

  Específicamente para operaciones de inserción. Múltiples transacciones, en el mismo índice, en el mismo rango, si la posición de inserción no entra en conflicto, no se bloquearán entre sí.

5) Bloqueo de registro

  Bloquear registros de índice. Por ejemplo: seleccione ... para actualizar

6) bloqueo de separación

  El intervalo para bloquear registros de índice. Evite que otras transacciones inserten datos en el intervalo. Por ejemplo: seleccione ... entre fines ... y ... para actualizar

7) Pro bloqueo de teclas

  Bloquear registros de índice e intervalos de índice. Prevenir la lectura fantasma.

 

Cerradura optimista y cerradura pesimista. El bloqueo optimista usa el número de versión, y el bloqueo pesimista siempre está esperando;

Bloqueo de mesa:

mesa de bloqueo 

Bloqueo de fila:

comenzar a iniciar una transacción

sql

cometer

2. Asuntos

1) Cuatro características:

Una atomicidad: todas las operaciones en la transacción se ejecutan o no se ejecutan.

Consistencia de C: todas las operaciones tienen éxito o fallan

Aislamiento: el proceso de procesamiento de transacciones no es visible para el mundo exterior

D Permanente: la modificación de datos es permanente

2) Problemas causados ​​por transacciones concurrentes:

Actualizaciones perdidas: los bloqueos optimistas usan números de versión, las actualizaciones de versiones inferiores se descartarán

Lectura sucia: la transacción A lee el contenido modificado por la transacción B pero no confirmado

Lectura no repetible: la transacción A lee la transacción B para modificar el contenido enviado. Ejemplo: la transacción A llega a la consulta por primera vez y realiza el procesamiento comercial posterior. La transacción B envía la modificación de datos. La transacción A vuelve a consultar. En este momento, la modificación de datos puede afectar el juicio de lógica comercial de la transacción A.

Lectura mágica: la transacción A lee los datos actualizados enviados por la transacción B. Ejemplo: Transacción Una primera consulta, solo tres datos deben modificarse, la transacción B envía datos nuevos y finalmente actualiza cuatro datos.

 

3) Nivel de aislamiento de la transacción: el nivel de aislamiento predeterminado de MySQL es lectura repetida de lectura repetida (RR)

Ver nivel de aislamiento de transacción: muestra variables como 'tx_isolation' 

Nivel de aislamiento Lectura sucia  No repetible Lectura fantasma
Leer sin comprometerse Si Si Si
Leer enviado No Si Si
Lectura repetible No No Si
Serializable No No No

 

Mecanismo mvcc de lectura repetible:

La operación de selección no actualiza el número de versión, es una lectura instantánea (versión histórica)

insertar, actualizar, eliminar actualizará el número de versión, puede consultar los cambios enviados por otras transacciones (que aparecerá como lectura mágica)

4) Sugerencias de optimización:

1. En la medida de lo posible, permita que toda la recuperación de datos se realice a través del índice para evitar la escalada de bloqueos de fila sin índice a bloqueos de tabla

2. Recupere las condiciones tanto como sea posible para evitar bloqueos de espacio

3. Controle el tamaño de la transacción tanto como sea posible para reducir la cantidad de recursos bloqueados y el período de tiempo

4. Tan bajo como sea posible el aislamiento de la transacción

Supongo que te gusta

Origin www.cnblogs.com/hongyedeboke/p/12716040.html
Recomendado
Clasificación