数据库会话的设置:
1:脏读
情景:A事物读取B事物修改了但是未提交的数据
问题:若B回滚了事物,A就读到了错误数据。
2:不可重复读
情景:A事物查询数据,B修改了数据,A又查询数据
问题:A事物前后两次数据不一样
3:幻读
情景:A事物查询数据,B事物插入数据,A又查询数据
问题:A事物感觉出现了幻觉,多了些数据
1.读未提交(Read Uncommitted):这种隔离级别可以让当前事务读取到其它事物还没有提交的数据。这种读取应该是在回滚段中完成的。通过上面的分析,这种隔离级别是最低的,会导致引发脏读,不可重复读,和幻读。
2.读已提交(Read Committed):这种隔离级别可以让当前事务读取到其它事物已经提交的数据。通过上面的分析,这种隔离级别会导致引发不可重复读,和幻读。
3.可重复读取(Repeatable Read):这种隔离级别可以保证在一个事物中多次读取特定记录的时候都是一样的。通过上面的分析,这种隔离级别会导致引发幻读。
4.串行(Serializable):这种隔离级别将事物放在一个队列中,每个事物开始之后,别的事物被挂起。同一个时间点只能有一个事物能操作数据库对象。这种隔离级别对于数据的完整性是最高的,但是同时大大降低了系统的可并发性。