日期:2014-05-17  浏览次数:20827 次

请教以下数据库现象是否也属于“脏读”?
众所周知,脏读的定义在SQL92标准中是这样定义的:
SQL-transaction T1 modifies a row. SQL- transaction T2 then reads that row before T1 performs a COMMIT. If T1 then performs a ROLLBACK, T2 will have read a row that was never committed and that may thus be considered to have never existed.

而且ORACLE本身也没有实现脏读。

那下面这种现象应该属于哪种隔离级别呢?

1. 事务A修改了某条数据(还未提交)
2. 事务B查询了该条正在被修改的数据(但是查询出来的是还没修改时候的值,因为事务A还没提交)
3. 事务A提交了修改,数据发生变化

这时候事务B得到的数据就是脏数据了?




------最佳解决方案--------------------
隔离性B读的肯定是未修改的数据,未提交的数据存在高速缓存中的是脏数
------其他解决方案--------------------
对头对头对头对头对头这下可以了吧
------其他解决方案--------------------
引用:
众所周知,脏读的定义在SQL92标准中是这样定义的:
SQL-transaction T1 modifies a row. SQL- transaction T2 then reads that row before T1 performs a COMMIT. If T1 then performs a ROLLBACK, T2 will have read a row……


不同的事务隔离级别,B能读到的未提交的数据,那么就是脏读,在oracle中这属于,READ UNCOMMITTED的事务隔离级别。
------其他解决方案--------------------
Oracle不支持脏读啊,也就是说。Oracle最低的隔离级别,也可以说缺省隔离级别就是READ COMMITED。
我想了下,这个现象应该属于不可重复读的范畴?