Revisión de transacciones de MySQL

Revisión de transacciones de MySQL

1.1 Resumen de la transacción

  • Transacción (transacción), una transacción es una unidad lógica de negocios completa, no se puede dividir,

Por ejemplo: transferencia de cuenta bancaria, transferencia de la cuenta A a la cuenta B, debe ejecutar dos extractos de actualización,

Una actualización aumenta,

Se reduce una actualización,

Las dos oraciones y actualizaciones anteriores tienen éxito y fallan al mismo tiempo.

Es mejor permitir un éxito y un fracaso,

Para asegurarse de que las dos declaraciones DML anteriores tengan éxito y fallen al mismo tiempo, debe utilizar el "mecanismo de transacción" de la base de datos.

  • Las declaraciones relacionadas con las transacciones son solo lenguaje DML, declaraciones de manipulación de bases de datos (insertar eliminar actualización)

¿Por qué? Debido a que estas declaraciones están relacionadas con los "datos" en la base de datos,

La existencia de transacciones es para garantizar la integridad y seguridad de los datos.

  • Si todas las empresas solo necesitan un lenguaje DML, ¿todavía necesitan un mecanismo de transacción?

No hay necesidad de aventuras;

Pero la situación real no es así, normalmente una transacción, "negocio", requiere varios idiomas DML para completarse conjuntamente.

1.2 Principio de transacción

mysql cinco declaraciones principales

  1. Declaración de consulta de la base de datos DQL

  2. Declaración de manipulación de la base de datos DML

  3. Lenguaje de definición de base de datos DDL

  4. TCL (transacción: compromiso de reversión)

  5. DCL: (autorización)

imagen 20200904084955651

1.3 Las características de la transacción

Cuatro características de la transacción ACID

  1. A. ( Atomicidad ) Atomicidad : una transacción es la unidad más pequeña y no se puede dividir

  2. Consistencia C ( coherencia ): la transacción debe garantizar que varias declaraciones DML tengan éxito o fallen al mismo tiempo.

  3. Aislamiento I ( aislamiento ): la transacción A debe tener aislamiento de la transacción B equivalente al hilo

  4. D ( durabilidad ): Durabilidad: Durabilidad significa que los datos finales deben conservarse en el archivo del disco duro antes de que la transacción se considere exitosa.

1.4 aislamiento de transacciones

Acerca del aislamiento entre transacciones

Existen niveles de aislamiento para el aislamiento de transacciones, que teóricamente incluyen cuatro:

De hecho, comienzan en segunda marcha:

  1. El primer nivel: lectura no confirmada (lectura no confirmada), la transacción actual puede leer la transacción no confirmada de la otra parte

La lectura de datos no confirmados tendrá lecturas sucias (las lecturas sucias son la lectura de datos sucios que no fueron cometidos por la transacción anterior) fenómeno: significa que se han leído datos sucios

  1. El segundo nivel: ** Lectura confirmada ** Podemos leer los datos enviados por la transacción de la otra parte

El problema con la lectura confirmada es: lectura no repetible (la lectura no repetible es volver a leer los datos enviados de la transacción anterior)

  1. El tercer nivel: lecturas repetibles (lectura repetible)

Este nivel de aislamiento resuelve: lectura no repetible

Hay un problema: la lectura de datos es fantasma

La lectura fantasma (lectura virtual) se refiere a la lectura de datos insertados por otra transacción en una transacción, lo que resulta en una lectura inconsistente antes y después.

  1. El cuarto nivel (serializable): serialización, lectura serializada resuelve todos los problemas,

Desventajas: baja eficiencia, necesidad de poner en cola las transacciones

Oracle comienza en segunda marcha de forma predeterminada, se ha enviado la lectura

Nivel de aislamiento predeterminado de mysql, lectura repetible

1.5 Negocio de demostración

La transacción de Mysql se envía automáticamente de forma predeterminada (lo que es el envío automático, siempre que se ejecute cualquier declaración DML, se enviará una vez)

Primero, establezca el nivel de transacción de aislamiento

1. leer sin confirmar (leer sin confirmar)

Leer sin compromiso

Abra dos ventanas, modifique los datos de una transacción, se puede consultar una transacción,

Establecer el nivel de aislamiento de la transacción

establecer el nivel de aislamiento de transacciones globales leído no confirmado;

Ver el nivel de aislamiento de msyql;

seleccione @@ global.tx_isolation;

imagen 20200904085613662

Después de establecer el nivel de aislamiento, salga.

imagen 20200904085632680

2. leer comprometido (leer comprometido)

Puede leer los datos enviados por otras transacciones (el nivel de aislamiento predeterminado de la mayoría de las bases de datos)
imagen 20200904085706504

3. lectura repetible (lectura repetible)

Nivel de aislamiento predeterminado de Mysql

imagen 20200904085811828

Cuando configuramos el nivel de aislamiento de la conversación actual en lectura repetible, la conversación actual se puede leer repetidamente, es decir, el conjunto de resultados de cada lectura es el mismo. De hecho, se realiza una copia de seguridad de los datos y se produce el fenómeno de la lectura fantasma.

4. serializable

imagen 20200904085843238

Supongo que te gusta

Origin blog.csdn.net/qq_41076577/article/details/108402005
Recomendado
Clasificación