前言
因为前天没更新,多补一更,简单介绍一下后端数据库MySQL的事务处理
什么是事务处理
事务(Transaction):事务是一组SQL语句的执行单元,这些语句被视为一个单独的工作单元。事务的主要目的是保证数据库操作的原子性,即这些操作要么全部执行,要么全部不执行
简单来说,事务是用来保证数据库的一致性,完整性的,关于事务处理我们需要提到ACID性
A.原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成。如果事务中任何一个操作失败,整个事务都会回滚
C.一致性(Consistency):事务必须使数据库从一个一致的状态转换到另一个一致的状态,确保数据符合所有预设则
I.隔离性(Isolation):并发执行的事务之间是相互隔离的,一个事务的执行不会影响其他事务的执行
D.持久性(Durability):一旦事务提交,其对数据库的修改是永久性的,即使系统发生故障,修改也不会丢失
事务控制语句
BEGIN 或 START TRANSACTION:用于显式地开始一个事务
COMMIT:提交事务,将事务中的所有更改永久保存到数据库
ROLLBACK:回滚事务,撤销所有未提交的更改,将数据库恢复到事务开始之前的状态
SAVEPOINT:在事务中设置保存点,以便在需要时回滚到特定的点
SET TRANSACTION:设置事务的隔离级别
自动提交模式
MySQL默认使用自动提交模式(autocommit),即每个SQL语句都会自动提交事务。要使用显式事务控制,需要关闭自动提交模式
调整语句:
SET AUTOCOMMIT = 0;
或者使用 BEGIN
或 START TRANSACTION
来开始一个事务
事务的隔离级别
什么是事务隔离级别:事务的隔离级别(Transaction Isolation Levels)是数据库管理系统(DBMS)中用于控制并发事务之间相互影响的机制。隔离级别决定了事务在并发执行时如何处理数据的一致性和完整性问题。不同的隔离级别提供了不同程度的保护,以防止并发事务之间的数据冲突和异常
MySQL支持四种事务隔离级别:
READ UNCOMMITTED:允许脏读、不可重复读和幻读
READ COMMITTED:防止脏读,但允许不可重复读和幻读
REPEATABLE READ(默认):防止脏读和不可重复读,但允许幻读
SERIALIZABLE:提供最高的隔离级别,防止脏读、不可重复读和幻读
事务的使用场景
事务通常用于需要保证数据一致性的复杂操作,例如银行转账、库存管理、订单处理等。在这些场景中,任何一个步骤的失败都可能导致数据不一致,因此需要使用事务来确保所有操作要么全部成功,要么全部回滚
总结
这篇番外笔记已经被你看完了