详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt382
Oracle默认情况下(没有事务) 保证了SQL语句级别的读一致性,即在一条SQL语句执行期间,它只会看到执行前点的数据状态,而不会看到执行期间数据被其他SQL改变的状态。
所以如果执行多条SQL的时候呢?比如你做一个报表查询,在执行完第一条sql的时候,执行第二条查询SQL,而这个之间有数据被改变了,第二条数据查询就有可能不一致
而Oracle的只读查询则保证了事务级别的读一致性,即在该事务范围内执行的多条SQL都只会看到执行前点的数据状态,而不会看到事务期间的任何被其他 SQL改变的状态。
没有事务的时候,在执行一条sql语句看到执行前点的数据状态,保证数据一致性
只读事务,在执行多条sql语句看到执行前点的数据状态,保证数据一致性