开始只有一些数据检索操作的事务是否有意义?

时间:2011-06-24 08:26:37

标签: sql transactions

开始一个只有一些数据检索操作并且不会发生UPDATE或INSERT的事务是否有意义?

谢谢!

3 个答案:

答案 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