事务隔离级别解读

本文仅供学习和参考

事务
http://www.cnblogs.com/jackal/archive/2011/02/14/1954231.html

目录:
1、原则
2、隔离级别
3、隔离级别所允许的并发问题



1、原则
原子性(Atomic),一致性(Consistency),隔离性(Isolation),持久性(Durability)

2、隔离级别
READ UNCOMMITTED (未提交读)
READ COMMITTED (提交读)
REPEATABLE READ (可重复读)
SERIALIZABLE (序列化)

3、两个并发事务访问同一条数据可能存在的问题
脏读:事务T1更新了一条数据,还未提交,事务T2读取同一条数据时是T1未提交的数据;如果T1回滚了,T2读到的数据就是无效的,脏数据。
不可重复读:一个事务对同一条记录读取2次,得到了不同的结果。事务T1读取一行记录,紧接着事务T2修改了T1刚刚读取的记录,然后T1再次查询,发现与第一次读取的记录不同,这称为不可重复读。
幻想读:事务T1读取一条指定where条件的语句,返回结果集。此时事务T2插入一行新记录,恰好满足T1的where条件。然后T1使用相同的条件再次查询,结果集中可以看到T2插入的记录,这条新纪录就是幻想。
可重复读:事务T2对这条数据视图修改回会一直等待事务T1结束。

隔离级别 脏读 不可重复读 幻想读
READ UNCOMMITTED (未提交读) 允许 允许 允许
READ COMMITTED (提交读) 允许 允许 允许
REPEATABLE READ (可重复读) 不允许 不允许 允许
SERIALIZABLE (序列化) 不允许 不允许 不允许
一般情况下实物隔离级别设置为READ COMMITTED

你可能感兴趣的:(J2EE)