您的位置:首页 > 数据库 > Oracle

只读事务的理解

2016-03-26 19:54 267 查看
oracle默认情况下(没有事务) 保证了sql语句级别的读一致性,即在一条sql语句执行期间,它只会看到执行前点的数据状态,而不会看到执行期间数据被其他sql改变的状态。

所以如果执行多条sql的时候呢?比如你做一个报表查询,在执行完第一条sql的时候,执行第二条查询sql,而这个之间有数据被改变了,第二条数据查询就有可能不一致

而oracle的只读查询则保证了事务级别的读一致性,即在该事务范围内执行的多条SQL都只会看到执行前点的数据状态,而不会看到事务期间的任何被其他 SQL改变的状态。

没有事务的时候,在执行一条sql语句看到执行前点的数据状态,保证数据一致性

只读事务,在执行多条sql语句看到执行前点的数据状态,保证数据一致性

应用场合:

如果你一次执行单条查询语句,则没有必要启用事务支持,数据库默认支持SQL执行期间的读一致性;

如果你一次执行多条查询语句,例如统计查询,报表查询,在这种场景下,多条查询SQL必须保证整体的读一致性,否则,在前条SQL查询之后,后条SQL查询之前,数据被其他用户改变,则该次整体的统计查询将会出现读数据不一致的状态,此时,应该启用事务支持。

【注意是一次执行多次查询来统计某些信息,这时为了保证数据整体的一致性,要用只读事务】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 事务