Transacción: la unidad de trabajo más pequeña para ejecutar sentencias SQL en la base de datos, asegurando que múltiples sentencias SQL en la transacción sean todas exitosas o todas fallen;
Una empresa completa requiere un lote de estados de cuenta DML (insertar, actualizar, eliminar) para que se completen conjuntamente. Las transacciones solo están relacionadas con los estados de cuenta DML o los estados de cuenta DML tienen transacciones.
1. Cuatro características de los asuntos (ACID):
- Atomicidad: Atomicidad, mínima inseparabilidad, garantizan todo éxito o todo fracaso;
- Coherencia: coherencia, de un estado coherente a otro estado coherente (cuando se requiere que todas las instrucciones DML funcionen, se debe garantizar que tendrán éxito o fallarán al mismo tiempo);
- Aislamiento: aislamiento, múltiples transacciones se aíslan entre sí sin afectarse entre sí;
- Durabilidad: Durabilidad, después de que se confirma la transacción, los datos se conservan.
2. Utilice los términos de la transacción:
- Abra la transacción:
Start Transaction;
- Fin de la transacción:
End Transaction;
- Confirmar la transacción:
Commit Transaction;
- Revertir la transacción:
Rollback Transaction;
3. Instrucciones relacionadas con asuntos:
- Verifique el estado de envío automático:
show variables like '%autocommit%';
- Envío automático de modificaciones:
set autocommit = 0/1;
- enviar:
commit;
- Retroceder:
rollback;
- Guardar punto de reversión:
savepoint s1;
- Retroceder al punto de retroceso especificado:
rollback to s1;
4. El signo del inicio y final de la transacción:
- Bandera de apertura: cualquier declaración DML (insertar, actualizar, eliminar) se ejecuta para marcar la apertura de la transacción;
- Señal de fin:
- Enviar: Finalización satisfactoria: sincronizar todos los registros del historial de operaciones de la declaración DML y los datos del disco duro subyacentes a la vez;
- Revertir: el final del error: borre todos los registros del historial de todas las operaciones de declaración DML.
5. Transacción y datos de nivel inferior de la base de datos: Durante el proceso de transacción, las declaraciones DML no cambiarán los datos del nivel inferior antes de que finalice, sino que solo registrarán las operaciones históricas y completarán el registro en la memoria. Solo al final de la transacción, y cuando finalice correctamente, se modificarán los datos del archivo del disco duro subyacente.
6. En Mysql, la transacción se confirma y se deshace:
- En Mysql, de forma predeterminada, la transacción se confirma automáticamente, es decir, siempre que se ejecute una declaración DML, la transacción se abre y la transacción se confirma.
- Después de usar la
set autocommit = 0;
transacción cerrada anterior , puede usarcommit;
yrollback;
para confirmar y revertir manualmente.
7. Una de las cuatro características principales de las transacciones: enlace de referencia de aislamiento (aislamiento)
Existe un cierto grado de aislamiento entre la transacción A y la transacción B, y el aislamiento tiene un nivel de aislamiento: (4)
- Leer sin confirmar: leer sin confirmar
- Leer comprometido: leer comprometido
- Lectura repetible: lectura repetible
- Serialización: serializable
1) leer no comprometido
- 事物A和事物B,事物A未提交的数据,事物B可以读取到
- 这里读取到的数据叫做“脏数据”
- 这种隔离级别最低,这种级别一般是在理论上存在,数据库隔离级别一般都高于该级别
2) leer comprometido
- 事物A和事物B,事物A提交的数据,事物B才能读取到
- 这种隔离级别高于读未提交
- 换句话说,对方事物提交之后的数据,我当前事物才能读取到
- 这种级别可以避免“脏数据”
- 这种隔离级别会导致“不可重复读取”
- Oracle默认隔离级别
3) lectura repetible
- 事务A和事务B,事务A提交之后的数据,事务B读取不到
- 事务B是可重复读取数据
- 这种隔离级别高于读已提交
- 换句话说,对方提交之后的数据,我还是读取不到
- 这种隔离级别可以避免“不可重复读取”,达到可重复读取
- 比如1点和2点读到数据是同一个
- MySQL默认级别
- 虽然可以达到可重复读取,但是会导致“幻像读”
4) serializable
- 事务A和事务B,事务A在操作数据库时,事务B只能排队等待
- 这种隔离级别很少使用,吞吐量太低,用户体验差
- 这种级别可以避免“幻像读”,每一次读取的都是数据库中真实存在数据,事务A与事务B串行,而不并发
8. La relación entre el nivel de aislamiento y la coherencia: