事务:数据库操作的最小工作单元.
事务特性
- 原子性(ATOMICITY):不可分割的最小工作单元,要么全部成功,要么全部失败。(操作本身全部成功或失败)
- 一致性(CONSISTENCY):指事务将数据库从一种一致性状态转换到另一种一致性状态,在事务开始之前和结束之后数据库中的数据完整性没有被破坏。(操作后的数据一致)
- 隔离性(ISOLATION):一个事务对数据库中数据的修改,在未提交完成前对其它事务是不可见的。
- 持久性(Durability):一旦事务提交,则其所作的修改就会永久保存在数据库中。
事务隔离级别
- 未提交读(Read uncommitted): 一个事务可以读取另一个未提交事务的数据。
- 已提交读(Read committed):一个事务可以读取其它事务提交后的数据。
- 可重复读(Repeatable read):同一个事务中多次读取同样的记录的结果是一致的,不会受其它事务操作影响。
- 串行化(Serializable):最高的隔离级别,相当于在每个读取的数据增加锁,会造成大量的阻塞。
Mysql默认隔离级别:重复读
- 隔离性:未提交读 < 已提交读 < 可重复读 < 串行化
- 并发性:未提交读 > 已提交读 > 可重复读 > 串行化
隔离级别比较
隔离级别\并发产生的问题 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
未提交读(Read uncommitted) | 是 | 是 | 是 |
已提交读(Read committed) | 否 | 是 | 是 |
可重复读(Repeatable Read) | 否 | 否 | 是 |
序列化(Serializable) | 否 | 否 | 否 |