MySQL事务与隔离级别
MySQL事务即
ACID
事物的隔离级别即ACID
中的I
事务的隔离性
A(Atomicity)
- 事务原子性: 事务中的操作,要么全做,要么全不做;一旦发生异常,整体事务回归到最初状态
C(Consistency)
- 事务一致性:
- 理解一: 事务从一个正确的状态到另一个正确的状态
- 理解二: 某个总量不回因为其他操作而变更;例子某个内部系统转账,不论怎样转账,钱的总量是不变的
I(Isolation)
- 事务隔离性:
— 脏读 不可重复读 幻读 read uncommitted(读未提交) √ √ √ read committed(读已提交) × √ √ repeatable read(可重复读) × × √ serializable(串行化/序列化) × × × - mysql事务默认是
repeatable read(可重复读)
的隔离级别 - oracle事务默认是
read committed(读已提交)
的隔离级别
脏读:
当一个事务进行操作时,且未提交;另一个事务又对当前未提交的数据进行了修改
不可重复读:
当一个事务在读取数据时,且当前事务未结束,另一个事务修改了数据,导致第一个事务两次读到的数据不一致
幻读:
当前事务对全表进行操作,单此时另一个事务又提交了一条数据,导致第一个事物中仍然存在未修改的数据
D(Durability)
- 事务持久性: 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。