事务的4个特性
- 原子性(A):一个事务中的操作,要么全部成功,要么全部失败
- 一致性©:数据库总是从一个一致性的状态转换到另外一个一致性的状态
- 隔离性(I):各个事务之间,不会产生影响(严格的隔离型,会导致效率降低,在某些情况下,为了提高程序的执行效率,会降低隔离级别)
- 持久性(D):所有数据的修改,必须持久化到存储介质中,不会因为应用程序的关闭,导致事务关闭
四个事务特性中,哪个是最关键的
所有特性中都是为了保证数据的一致性,所以一致性是最终的追求。事务中的一致性是通过原子性、隔离性、持久性来保证
数据不一致的问题
- 脏读
- 不可重复读
- 幻读
隔离级别
- 读未提交,会产生脏读
- 读已提交,会产生不可重复度(同一个事务中查询到的数据都应该是一样的)
- 可重复读,会产生幻读
- 序列化
隔离级别 | 异常情况 | 异常情况 | 异常情况 |
---|---|---|---|
读未提交 | 脏读 | 不可重复读 | 幻读 |
读已提交 | 不可重复读 | 幻读 | |
可重复读 | 幻读 | ||
序列化 |