开始一个只有一些数据检索操作并且不会发生UPDATE或INSERT的事务是否有意义?
谢谢!
答案 0 :(得分:2)
不正常。
如果您有2个SELECT,那么可能在读取之间的秒数内变得不一致。
事务不会为SQL Server / Sybase类型锁定修复此问题,因为将释放读锁定。因此,您需要使用更高的隔离级别,这将影响并发性(可能非常serious)
“数据不一致的微小风险”与“性能损失”之间的权衡取决于您。
答案 1 :(得分:0)
为该案例启动交易可确保所看到的数据一致;其他一些进程将无法更新您正在查看的行,以便第二个SELECT
在看到相同内容时看到与第一个不同的内容。
答案 2 :(得分:-1)
是的,以确保事务管理的读取一致性。
使用只读事务确保可重复读取
默认情况下,Oracle的一致性模型可保证语句级读取一致性,但不保证事务级读取一致性(可重复读取)。如果您想要事务级读取一致性,并且您的事务不需要更新,则可以指定只读事务。在指示您的事务是只读的之后,您可以针对任何数据库表执行任意数量的查询,因为知道只读事务中每个查询的结果与单个时间点一致。
http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96590/adg08sql.htm