数据库脏读、幻读、不可重复读

什么是数据库脏读、幻读、不可重复读:



1. 脏读 :一个事务读到另一个事务未提交的更新数据。
脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个被更新后的数据。

2. 幻读 : 一个事务读到另一个事务已提交的新插入的数据。
例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时第二个事务向表中插入一行新数据。那么第一个事务发现表中还有没有修改的数据行,就好象发生了幻觉一样。
3. 不可重复读 :一个事务读到另一个事务已提交的更新数据。
指一个事务两次对同一行数据查询,由于第二个事务在此期间对此行数据进行了修改导致第一个事务两次读取到的同一行数据不同称之为不可重复读。

基于元数据的 Spring 声明性事务(spring的隔离性事务) :
Isolation 属性一共支持五种事务设置,具体介绍如下:
   default:使用数据库设置的隔离级别 ( 默认 ) ,由 DBA 默认的设置来决定隔离级别。
   read_uncommitted:会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 )
   read_committed: 会出现不可重复读、幻读问题(锁定正在读取的行)
   repeatable:会出幻读(锁定所读取的所有行)
   serializable: 保证所有的情况不会发生(锁表)

猜你喜欢

转载自yucaifu1989.iteye.com/blog/1829578