日期:2014-05-16  浏览次数:20339 次

数据库的四个隔离级别
脏读,又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。

不可重复读,是指在是指在数据库访问中,一个事务范围内两个相同的查询却返回了不同数据。这是由于查询时系统中其他事务修改的提交而引起的。比如事务T1读取某一数据,事务T2读取并修改了该数据,T1为了对读取值进行检验而再次读取该数据,便得到了不同的结果。

幻读,又称丢失修改,是指在数据库访问中,两个事务T1和T2同时写入同一数据,T2提交的结果破坏了T1提交的数据,使T1对数据库的修改丢失,仿佛出现了幻觉一样,造成了数据库中的数据错误。

  READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 )

  READ_COMMITTED  会出现不可重复读、幻读问题(锁定正在读取的行)

  REPEATABLE_READ 会出幻读(锁定所读取的所有行)

  SERIALIZABLE 保证所有的情况不会发生(锁表)