四种隔离级别和脏读、幻读、不可重复读
事务特性
acid 原子性,一致性,隔离性,持久性:
- 原子性,要么同时成功,要么同时失。
- 一致性,数据应该是一致的。
- 隔离性,多个并发事物是相互隔离的。
- 持久性,事务提交,对数据的改变是永久的。
四种事务隔离级别
- Read UnCommited 读未提交
- Read Commited 读已提交
- Repeatable Read 可重复读
- Serializable 可串行化
脏读、幻读、不可重复读
- 脏读(侧重于修改):
脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。
- 不可重复读:
是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。(即不能读到相同的数据内容)
- 幻读(侧重于新增):
当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务向表中插入一行新数据。那么就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。
四种隔离级别和脏读、幻读、不可重复读的关系如下表(x表示不会发生):