Mysql 事务
基本概念
- ⼀个最⼩的不可再分的⼯作单元
- 通常情况下,⼀个事务对应⼀个完整的业务
Mysql 事务特性
ACID
A 原⼦性(Atomicity)
⼀个事务的所有操作,要么全部完成,要么都没完成,不能结束在中间环节。如果事务在执
⾏过程中发⽣错误,会被回滚到事务开始之前的状态C ⼀致性(Consistency)
在事务开始之前以及事务结束之后,数据库的完整性不能被破坏I 隔离性(Isolation)
允许多个并发事务同时对数据进⾏修改和读写的能⼒,它可以防⽌由于多个事务并发执⾏时
由于交叉执⾏⽽导致的数据不⼀致D 持久性(Durability)
事务处理结束了以后,对数据的修改是永久的,即使是发⽣了系统故障,数据也不会丢失
MySQL四⼤隔离级别
术语说明:
脏读:⼀个事务读取另⼀个事务还没有提交的数据
不可重复读:同⼀个事务内,两个相同的查询返回了不同的结果
RU 读不提交(Read Uncommited)
在该隔离级别下,事务之间完全不隔离,会产⽣脏读,⼀般情况不会使⽤RC 读提交(Read Commited)
本事务读取到的是其它事务提交的最新数据,但有⼀个问题在同⼀个事务中,前后两相同的
select可能会读到不同的结果RR 可重复读(Repeatable Read)
在同⼀个事务中,select的结果是事务开始时时间点的状态,因此,同⼀个事务同样的
select操作可以读到⼀致的结果serializable串⾏化
读操作会隐式获取共享锁,保证不同事务之间的互斥