notas de fondo MySQL (16) - Transacción

aprendizaje recomendada

notas de fondo MySQL (1) - la comprensión en profundidad del índice

Una transacción

1. ¿Qué es una transacción

Una transacción es un conjunto de operaciones, o se ejecuta o no ejecutado. El ejemplo clásico es un ejemplo de transferencias: transferencias de A a B, si A entonces B debe cargarse el dinero. Sin embargo, si se produce un error del sistema en el proceso, A no está cargada, entonces B no obtendrá el dinero, que es transaccional dinero de débito y el procesamiento de las operaciones de este grupo.

2. Transacción cuatro propiedades (ácido)

Aquí Insertar imagen Descripción

atomicidad 1.Atomic-

Una transacción es la unidad más pequeña, que opera dentro de una transacción, ya sea tener éxito, o de lo contrario fracasará.

consistencia 2.Consistency-

Los datos antes y después de la ejecución de la transacción son los mismos cuando se lee a otras cosas.

aislamiento 3.Isolation-

Realiza simultáneamente entre una pluralidad de transacciones no interfieren entre sí, cada transacción independiente.

4.Durability- persistencia

Después de la ejecución de transacciones, cambian sus datos es persistente, no se produce la reversión.

3. transacciones simultáneas trajeron cuatro grandes problemas

1. lectura sucia

Una transacción lee los datos sucios transacción B no comprometida, lleva una a la operación después de la transacción está mal.
Aquí Insertar imagen Descripción

de lectura 2. A no repetible

Una transacción lee los datos, B para realizar una transacción de actualización de operaciones, lo que resulta en una transacción no se puede leer a los resultados originales.
Aquí Insertar imagen Descripción

3. magia de la lectura

Después de la operación lee los datos A, B transacción para añadir nuevos datos, lo que resulta en una transacción no puede leer los resultados originales.
Aquí Insertar imagen Descripción

4. Pérdida de actualización

A se refiere a la posibilidad de transacción de actualización de transacción rollback B está revocado.

Q: lectura no repetible y las lecturas fantasma ¿Cuál es la diferencia?

Se refiere a una operación de lectura no repetible A lee un período de datos, la transacción B cambia los datos de artículos, lo que lleva a resultados inconsistentes antes y después de la lectura de A, para resolver este problema sólo tiene que añadirel bloqueo de filasLeer la transacción Una abierta durante ciertas partes de información, otras transacciones no pueden realizar cambios en los datos del artículo.

El fantasma leer una transacción se refiere al período de la lectura de una pluralidad de datos, los datos de transacción B añadido, dando lugar a resultados inconsistentes antes y después de la lectura de A, para resolver esta necesidad problema para añadirbloqueo de nivel de tablaAsí que una pluralidad de datos durante la lectura cosas, otras transacciones no pueden cambiar los datos en la tabla.

II mecanismo de bloqueo de la base de datos.

Cerradura de acuerdo con diferentes objetos, por lo general se puede dividirbloqueo de tablaybloqueo de línea,El primero de bloqueo toda la tabla, qué tabla un bloqueo de fila en particular. transacciones simultáneas de bloqueo punto de vista relación, se pueden dividir en bloqueo de compartimiento y bloqueo exclusivo. bloqueo compartido evitará bloqueo exclusivo, pero permitir a otros bloqueo compartido, y ambos bloqueo exclusivo de impedir que otros bloqueo exclusivo de impedir que otros bloqueo compartido.

1. Las cuatro clases de nivel de aislamiento

Niveles de aislamiento lectura sucia lectura no repetible la magia de lectura
Lectura no confirmada
Lectura confirmada X
La lectura repetible X X
serialización X X X

El cual se puede leer como una repetición de la InnoDB nivel de aislamiento de las transacciones.

almacenamiento algoritmo de bloqueo del motor 2.InnoDB

  1. Registro de bloqueo: bloqueo en una sola fila
  2. Bloqueo Gap: Bloqueo brecha, un rango de bloqueo pero no incluye su propio
  3. Siguiente-Key Lock: Bloqueo Bloqueo de grabaciones + Gap, una gama que está bloqueado, incluyéndose a sí mismo.

Q: tres tipos de algoritmos de bloqueo cuándo usar?

  1. La modificación de una sola fila de datos: Registro de bloqueo, bloquear una sola fila
  2. La modificación de la gama de los datos: Next-Key Lock: bloqueo del rango de datos

3.MVCC- control de concurrencia multi-versión

MVCC se refiere a un multi-versión técnicas de control de concurrencia. motor InnoDB es el RR nivel de aislamiento predeterminado (lectura repetible), pero fueron capaces de resolver el problema de lectura fantasma, La razón radica en el uso de la tecnología MVCC.

tecnología MVCC para lograr: en el rango de datos de la transacción leer, InnoDB primero le asigna un número de versión (el valor predeterminado más 1) para la transacción,Luego, en el transcurso de la consulta transacción sólo consulta los datos es menor que el número de versión de la transacción, Entonces si hay o no hay otras cosas para cambiar los datos de esta gama son capaces de consultar el mismo resultado, porque si otra transacción cambia los datos, se producirá un número de versión mayor, no se consultan.

Gracias

  1. https://segmentfault.com/a/1190000012650596
  2. https://www.jianshu.com/p/8d735db9c2c0
Publicados 309 artículos originales · ganado elogios 205 · Vistas de 300.000 +

Supongo que te gusta

Origin blog.csdn.net/pbrlovejava/article/details/103550499
Recomendado
Clasificación