MySQL (dos) transacción MySQL


transacción de MySQL

En primer lugar, los asuntos básicos de introducción

1, conceptos:

如果一个包含多个步骤的业务操作,被事务管理,要么同时成功,要么同时失败。

2, la operación

	(1)开启事务:start transaction;
	(2)回滚:rollback;
	(3)提交:commit;

3, Ejemplo: Joe Smith John Doe para transferir 500 yuanes

  -- 0.开启事务
    start transaction;
    --1.张三账户-500
    update account  set balance =balance-500 where name="zhangsan"
    --2.李四账户+500
     update account  set balance =balance+500 where name="lisi"
     --3.出现异常,回滚
     rollback;
     --4.无异常,提交
     commit;

4, por defecto de MySQL base de datos de transacciones de confirmación automática

4.1, dos formas de confirmación de transacción:

1. envío automático
por defecto Oracle Manual de presentación de
MySQL se envía automáticamente
una sentencia DML (adiciones y supresiones) presentará automáticamente una transacción.
2. manualmente someter
primera transacción abierta, y luego presentó

4.2, modificar la presentación de transacción por defecto:

     1.查看事务的默认提交方式:
         select @@autocommit;
         1 代表自动提交
         0 代表手动提交 
     2.修改默认提交方式(修改成手动)
         set @@autocommit = 0;  

En segundo lugar, la transacción cuatro propiedades (ACID)

  • atomicidad
  • consistencia
  • aislamiento
  • resistencia

1, atomicidad (atomicidad)

La atomicidad se refiere a todas las operaciones de la transacción se efectuó por todo el éxito o fracasarán deshace.
Por lo tanto, la operación de la transacción, si tiene éxito, debe ser plenamente aplicado a la base de datos si falla la operación no puede tener ningún impacto en la base de datos.

2. Consistencia (consistencia)

La consistencia se refiere a la transacción deben hacer la base de datos de un estado consistentes transiciones a otro estado coherente ;
es decir, la ejecución de una transacción antes de y la aplicación del poste debe estar en constante estado.
Por ejemplo:
se supone que tanto el usuario A y el dinero del usuario B se suman a un total de 1.000, entonces no importa lo transferencias entre A y B, a su vez varias cuentas, después del final de la transacción del dinero se suman a dos usuarios deberían tener que ser de 1000, esta es la consistencia transaccional.

3, el aislamiento (aislamiento)

Aislamiento cuando una pluralidad de usuarios de acceso simultáneo a la base de datos, tal como cuando se opera simultáneamente con una tabla, una base de datos para cada abierto transacción de usuario, la operación no ser perturbado por otras transacciones, para ser aislado el uno del otro entre la pluralidad de transacciones simultáneas.

4, persistente (Durabilidad)

Persistencia significa que una vez se confirma una transacción, los cambios a los datos en la base de datos es permanente, se confirma la transacción no se perderá incluso en el caso de un sistema de base de datos experimentó un fracaso de la operación.

En tercer lugar, el nivel de aislamiento

Cuanto mayor sea el nivel de aislamiento, más se puede garantizar la integridad y la consistencia de los datos, pero el impacto en el rendimiento concurrente también es mayor.
nivel de aislamiento por defecto de MySQL es repetible leer. La lectura repetible

los niveles de aislamiento de transacción de base de datos son cuatro, de bajo a alto orden:

1, la lectura no confirmada (no autorizado a leer, leer no comprometidos)

Si una transacción se ha iniciado la escritura de datos, otra transacción está permitido escribir al mismo tiempo, pero permite otras transacciones para leer los datos del viaje.
El nivel de aislamiento puede ser "bloqueos de escritura exclusivos" para lograr.
Esto evita perdieron cambios, pero pueden aparecer lectura sucia .
Sucia leer : Que la transacción B para leer los datos de la transacción A no comprometidos.

2, lectura confirmada (autorizado a leer, leer presentación)

Leer transacción de datos permite otras operaciones continúan para acceder a las filas de datos, pero escriben transacciones no evitarán que otras transacciones tengan acceso a la fila.
El nivel de aislamiento para evitar sucia lee , pero puede aparecer lectura no repetible.
lectura no repetible : Una transacción de datos de pre-lectura, la transacción B actualizar de inmediato los datos y presentar la transacción, mientras que la transacción A lee los datos de nuevo, los datos han cambiado.

3, Lectura repetible (lectura repetible) (MySQL por defecto)

Lectura repetible se refiere a una transacción, la lectura de los mismos datos múltiples veces.
Cuando esta operación no ha terminado, otra transacción también el acceso a los mismos datos.
A continuación, lea los datos entre los dos en la primera transacción, incluso si la segunda transacción para modificar los datos, la primera transacción de datos de lectura de dos es el mismo.
Esto ocurre dos veces en una lectura de datos de transacción es la misma llamada de lectura, repetible.
Leer transacción de datos estaría prohibida por una transacción de escritura (pero permitiendo que la transacción de lectura), la transacción de escritura para prohibir cualquier otra transacción.
Esto evita la lecturas no repetibles y sucio lee, pero a veces pueden aparecer lectura fantasma.
(Leer datos de transacción) que pueden ser "bloqueos de lectura compartida" y "bloqueos de escritura exclusivos" lograr.

4, Serializable (serialización)

Proporcionar estricta de aislamiento de transacción.
Se requiere la serialización de la transacción, una operación puede ser realizada por uno, en lugar de simultáneamente.
Si tan sólo "a nivel de fila de bloqueo" no se puede lograr la serialización operación, debe asegurarse de que los datos recién insertados no se acaba de ejecutar una transacción de acceso de consulta a través de otros mecanismos a través.
La serialización es el nivel de aislamiento más alta, pero el precio es también el más caro de bajo rendimiento, utilice raramente, bajo ese nivel, el orden rama, no sólo para sucia evitar lee, lectura no repetible, sino también para evitar la lectura fantasma.

En cuarto lugar, la cerradura de bloqueo optimista y pesimista

El bloqueo pesimista, alguien quiere hacerle daño me
bloqueo optimista, Justicia tiene brazos largos

Publicado 44 artículos originales · ganado elogios 5 · Vistas 889

Supongo que te gusta

Origin blog.csdn.net/qq_40634246/article/details/104734334
Recomendado
Clasificación