事物的四个特性和四个隔离级别
2017-12-15 18:08
309 查看
什么事物
事物是一条或者多条sql语句组成的执行序列,这个序列中的所有语句都属于同一个工作单元,要么同时完成,其中如果有一个失败,则其他操作都要回滚。原子性 (Atomicity)
事物是一个不可分割的数据库逻辑工作单位,要么全部完成,要不失败回滚。一致性 (Consistency)
事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态。隔离性 (Isolation)
一个事物的执行不能被别的并发事物所干扰持久性 (Durability)
事物一旦提交,其对数据库的改变应该是永久的。隔离级别
数据库4中隔离级别如下所示。隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
Read uncommitted(读未提交的) | √ | √ | √ |
Read committed (读已提交的) | × | √ | √ |
Repeatable read(可重复的) | × | × | √ |
Serializable(可串行化) | × | × | × |
不可重复读:(在没有加锁的情况下)事物A,执行前后2次执行一条sql,发现sql的结果不同,因为B事物在A事物执行第二次查询的时候,对A的结果的某些行提交了进行了更新,或者删除,并提交了事物。导致A事物,第二次查询出的结果和第一次不一样。
幻读:A事物执行一条sql查询,B事物对A事物sql的相关表添加一条数据,并提交。A事物第二次查询时发现数据行增加了。由此出现了幻读,可重复读和幻读的区别在于,前者是对已存在的数据进行并发操作,后者则是新增数据对旧的结果集的影响。有时候幻读是我们需要的,有时候是不需要的,这还得看具体业务的要求。
Serializable(可串行化) :严重影响数据库性能,一般不会用到。
企业中大多数都是使用Read commited来避免脏读,如果要避免不可重复读则需要加乐观锁或悲观锁来对,数据操作定制不同的策略来解决。
相关文章推荐
- 事物的传播特性和隔离级别
- 事物操作的四个隔离级别
- Mysql数据库四大特性、事物的四个隔离、基本MySQL语句、独立表空间
- 数据库 - 事物隔离级别和事物传播特性
- 事物的四大特性与隔离级别
- 事物四个特性原子,一致,隔离,持久
- 数据库事物的四大特性及隔离级别
- hibernate的事物隔离级别和传播特性
- spring事物传播特性--数据库的隔离级别
- 数据库事物特性和事物隔离级别
- Spring事物隔离级别以及事物的七种传播特性详细介绍,以及应用当中需要注意的点
- Java菜鸟面试突破系列之事物方方面面(事物种类特性及隔离级别、悲观锁和乐观锁等)
- 【数据库之事务(一)】事务是什么,以及事务四个特性,以及事务并发问题和隔离级别
- 数据库事务的四个特性以及隔离级别
- 事物的隔离级别和传播特性
- 数据不一致的原因,数据库三范式,事务特性,事务的四个隔离级别,数据库锁
- 事务四个特性以及事务的四个隔离级别
- 事物的四个隔离级别
- mysql的事务四个特性以及事务的四个隔离级别
- 事物的特性及事物的隔离级别